Avatar billede mbm2016 Nybegynder
08. maj 2009 - 20:11 Der er 5 kommentarer og
1 løsning

Javascript - Sæt højden på et objekt?

Hej eksperter,

Jeg har denne nedenstående kode som gerne skulle kunne virke.

Den virker også helt fint i Internet Explorer, men når jeg prøver i Firefox, og fører musen hen over div'et og væk igen, så kører div'et ikke ned igen.

Det ser ud som om den ikke kan subtrahere højden på div'et?

Er der nogle der kan hjælpe?

På forhånd tusinde tak.

<script>
var vej = "";
var obj;
function Glid()
{
var objHeight = parseInt(obj.offsetHeight);
if(vej == "op")
{
if(obj.offsetHeight < 118){obj.style.height=objHeight+2;}else{clearTimeout(timer)}

}
if(vej == "ned")
{
if(obj.offsetHeight > 87){obj.style.height=objHeight-2;}else{clearTimeout(timer)}
}
window.setTimeout('Glid()',1);
}
</script>



<div onmouseover="vej='op';obj=this;Glid()" onmouseout="vej='ned';obj=this;Glid()" style="border:1px solid black;background-color:beige;width:87px;height:87px;">
hej med dig
</div>
Avatar billede tjens Nybegynder
08. maj 2009 - 20:47 #1
Du skal lige have px på til sidst:

obj.style.height=objHeight+2 + "px";
Avatar billede mbm2016 Nybegynder
08. maj 2009 - 21:27 #2
Det virker ikke :( har du prøvet det af i din firefox?
Avatar billede tjens Nybegynder
08. maj 2009 - 21:47 #3
Jeg har testet en del nu, og kan se at
  var objHeight = parseInt(obj.offsetHeight);
ikke er samme tal som
  var objHeight = parseInt(obj.style.height);

Der var 2 til forskel i firefox, så derfor loopede den på -2

Derudover mener jeg der skal en return; efter de 2 clearTimeout, for ikke at ryge ned i bunden af funktionen og starte timeren igen.

Testet eksempel med lidt debugvisning tilføjet:

<script type="text/javascript">
var vej = "";
var obj;
var timer;
function Glid()
{
var logdiv = document.getElementById("log");
var objHeight = parseInt(obj.style.height);
//alert(objHeight + "#" + obj.style.height);
if(vej == "op")
{
logdiv.appendChild(document.createTextNode(vej + ":" + obj.offsetHeight +  objHeight + " "));
if(objHeight < 118){obj.style.height=objHeight+1 + "px";}else{clearTimeout(timer); return;}

}
if(vej == "ned")
{
logdiv.appendChild(document.createTextNode(vej + ":" + obj.offsetHeight + ":" + objHeight + " "));
if(objHeight > 87){ obj.style.height=(objHeight-1) + "px";}else{clearTimeout(timer); return;}
}
timer = window.setTimeout('Glid()',2);
}
</script>

</head>
<body>
<div onmouseover="vej='op';obj=this;Glid()" onmouseout="vej='ned';obj=this;Glid()" style="border:1px solid black;background-color:beige;width:87px;height:87px;">
hej med dig
</div>
<hr>
<div id="log"></div>
</body>
</html>
Avatar billede mbm2016 Nybegynder
10. maj 2009 - 21:20 #4
Undskyld jeg først skriver nu men det virker desværre ikke. Jeg laver det i en webbrowser i C#, og den webbrowser er åbenlyst noget shit!
Avatar billede tjens Nybegynder
10. maj 2009 - 21:32 #5
Eksemplet er testet og virker i MSIE7, Firefox og Chrome.

Jeg ved ikke hvad "en webbrowser i C#" betyder?
Avatar billede mbm2016 Nybegynder
16. juli 2009 - 15:10 #6
tjahh..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester