ron: komisches verhalten bei mozilla und javascript

hallo forumsnutzer,

ich wundere mich gerade über etwas in meinem mozilla.
und kann mir es auch nicht erklären.

eine ebene soll per javascript an das untere seitenende verschoben werden.

funktioniert im (pc) ie, opera.

auf mozilla funktioniert es nur, und das finde ich das komische, wenn ich ein ";" vor "document.getElementById("ebene").style.top = getSeitenHeight();" setze.

am besten zeige ich mal hier mal ein beispiel.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<div id="ebene" style="position:absolute; height:50px">
      Hier steht text der nach unten verschoben werden soll
<br></div>

<div>
<img src="trans.gif" width="10" height="1000">
</div>

<SCRIPT LANGUAGE="JavaScript">

<!--

ns4 = (document.getelementbyId)? true:false
ie4 = (document.all)? true:false

function getSeitenHeight()
{
return(document.body.scrollHeight);

}

if (ns4) ;document.getElementById("ebene").style.top = getSeitenHeight();
if (ie4) ebene.style.top = getSeitenHeight();

alert(getSeitenHeight()+" Darstellungsmodus:" + document.compatMode);

-->
</SCRIPT>
</body>
</html>

so funktioniert es jedenfalls...

und das ganze auch nur im Quirks Mode.
ie und opera ist der modus egal, da funktioniert es auch wenn ich

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/DTD/strict.dtd">

angebe.

kann mir vielleicht jemand erklären wieso das so ist, das ich ein ";" vorneran setzen muß?
ich habe das sowieso nur zufällig herausgefunden.

benutzen tu ich einen mozilla firebird 0.7

würde mich über eventuelle antworten freuen...

gruß ron

  1. hi,

    auf mozilla funktioniert es nur, und das finde ich das komische, wenn ich ein ";" vor "document.getElementById("ebene").style.top = getSeitenHeight();" setze.

    ns4 = (document.getelementbyId)? true:false

    es heisst getElementById - grosses E, grosses B.

    ie4 = (document.all)? true:false

    und ein semikolon, um diese beiden zeilen abzuschliessen, kann auch nicht schaden.

    if (ns4) ;document.getElementById("ebene").style.top = getSeitenHeight();

    da oben die schreibweise falsch war, ist ns4 hier false, auch wenn der browser getElementById() unterstützt.
    wenn du jetzt nach dem if() direkt ein semikolon setzt, ist der anweisungsblock des if damit abgeschlossen - die nachfolgende anweisung wird also in jedem fall ausgeführt.

    btw: eigentlich unterstützt der netscape 4 getElementById m.W. doch noch nicht - also ist es doch unfug, hier die variable ns4 so zu benennen bzw. derart zu belegen, oder?

    gruss,
    wahsaga

    1. hi wahsaga,

      den namen finde ich ja schon immer interessant, und du sagst auch immer schön die wahrheit? ;) oder soll das damit garnicht gemeint sein?

      ns4 = (document.getelementbyId)? true:false

      es heisst getElementById - grosses E, grosses B.

      jedenfalls hattest du recht damit.
      jetzt funktioniert es, was für ein doofer fehler.

      was mir noch nicht klar ist, warum das ganze auf mozilla nur im Quirks Mode funktioniert...

      btw: eigentlich unterstützt der netscape 4 getElementById m.W. doch noch nicht - also ist es doch unfug, hier die variable ns4 so zu benennen bzw. derart zu belegen, oder?

      haste auch recht, war für mich nur ne variable...

      danke und gruß ron

      1. hi,

        hi wahsaga,

        den namen finde ich ja schon immer interessant, und du sagst auch immer schön die wahrheit? ;) oder soll das damit garnicht gemeint sein?

        nein, soll es eigentlich nicht.
        hab die entstehung dieses nicks auch hier im forum schon mal erläutert, wenn ich mich recht erinnere - vielleicht findest du sie ja im archiv :-)

        was mir noch nicht klar ist, warum das ganze auf mozilla nur im Quirks Mode funktioniert...

        quirks mode heisst im allgemeinen bei allen browsern, die zwischen mehrerer solcher modi unterscheiden, dass sie fehlern gegenüber toleranter sind - was HTML- und CSS-fehler, und teilweise offenbar auch javascript-fehler angeht.

        im quirks mode hat sich der mozilla also einfach gesagt, "da steht zwar getelementbyId, aber der meinte sicher getElementById - was soll's, schwamm drüber, tu' ich mal einfach so, als ob das für mich das selbe wäre ..." - und demzufolge ergab dann auch deine spätere abfrage if(ns4) true.

        gruss,
        wahsaga