Kristian: JavaScript ungültiges Argument

Guten Morgen liebe Gemeinde ;o)

ich habe eine HTML Datei mit zwei Layern erstellt, die sich je nach Größe eines dritten Layers in der Höhe anpassen sollen. Das soll über JavaScript geregelt werden. Im Firefox funktioniert das folgende Script auch wunderbar... nur im IE 6 gibt er folgendes aus:

Zeile: 18
Zeichen: 2
Fehler: Ungültiges Argument.
Code: 0

hier das JavaScript:

<!--
 function dheight() {
 var t1=(window.innerHeight);
 var t2=(document.getElementById('content').offsetHeight+265);
  if (t1 <= t2) {
  var h1=(document.getElementById('content').offsetHeight+121)+"px";
  var h2=(document.getElementById('content').offsetHeight+265)+"px";
  //alert ("T1 < T2");
  }
 if (t1 >= t2) {
  var h1=(window.innerHeight-144)+"px";
  var h2=(window.innerHeight)+"px";
  //alert ("T1 > T2");
  }
 document.getElementById('menue').style.height=(h1);
  document.getElementById('teaserbg').style.height=(h2);
 }
//-->

Was genau ist der Fehler und wie behebe ich ihn? Danke schonmal im voraus.

  1. Hallo Kristian,

    da ich in Deinem Script die Zeile 18 nicht finde, kann ich Dir nur zwei Tipps geben:

    • Benutze zum Testen von Javascripten die Javascript-Konsole des Firefox.
    • Sieh Dir mal die Werte von t1 und t2 per alert an.

    Gruß, Jürgen

    1. Hallo Jürgen,

      ich habe mir die Werte t1 und t2 per alert angesehen und festgestellt, das FF alles perfekt umsetzt nur der IE nicht und ich hab keine Ahnung warum...

  2. Hallo Kristian

    ich habe eine HTML Datei mit zwei Layern erstellt, die sich je nach Größe eines dritten Layers in der Höhe anpassen sollen.

    Du meinst aber nicht wirklich layer - oder? Die funktionieren laut SELFHTML nur für Netscape 4 ;=)
    Es wäre sehr nett, wenn du uns auch noch den HTML-Teil zeigen könntest, wo das Script aufgerufen wird. Kann sein, dass dir inzwischen - während ich das schreibe - die javascript Könner schon den Fehler gefunden haben, aber für mich sind die Voraussetzungen noch nicht ausreichend. In einem schnell zusammengestrickten Testcase kommt bei mir zwar auch die IE Fehlermeldung, aber beim FF passiert gar nichts (nichtmal ne Meldung in der Javascript Konsole)

    Liebe Grüße

    mbr

    Edit: eines kann ich dir jedenfalls schon mal sagen:
    Wenn du direkt nach

      
    var t1=window.innerHeight;  
    
    

    ein

      
    alert(t1);  
    
    

    einfügst wirst du staunen...

    1. Hallo mbr,

      danke erstmal für deine Antwort. Gebe ich nach deiner Angabe:

      var t1=window.innerHeight;
      alert(t1)

      ein, zeigt

      IE = undefined
      FF = die exakte Angabe/ Höhe von innerHeight (z.B. 636) an

      ist schon eigenartig und ich kann mir das nicht erklären...

      anbei der HTML-Teil:

      <link href="index.css" rel="stylesheet" type="text/css">
      <script language="javascript" type="text/javascript" src="lib/hight.js"></script>
      </head>

      <body onLoad="dheight()">
      <div id="menue">link1 .... link2.... link3 </div>
      <div id="content">some text..... </div>
      <div id="teaserbg"></div>

      P.S. ich meine natürlich DIV's ;o)

      Gruß Kristian

      1. hi,

        var t1=window.innerHeight;
        alert(t1)
        IE = undefined
        FF = die exakte Angabe/ Höhe von innerHeight (z.B. 636) an

        ist schon eigenartig und ich kann mir das nicht erklären...

        Die Beschreibung zu innerHeight erklärt's dir gerne.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Danke, wahsaga...

          das wusste ich noch nicht... hilft mir aber weiter ;o)

  3. Hello out there!

    <!--

    Was haben HTML-Kommentarzeichen im JavaScript verloren?

    if (t1 <= t2) {
      var h1=(document.getElementById('content').offsetHeight+121)+"px";
      var h2=(document.getElementById('content').offsetHeight+265)+"px";
      //alert ("T1 < T2");
      }
    if (t1 >= t2) {
      var h1=(window.innerHeight-144)+"px";
      var h2=(window.innerHeight)+"px";
      //alert ("T1 > T2");
      }

    »»

    Was genau ist der Fehler […]?

    Nicht _der_ Fehler, aber: Im Falle t1 == t2 sollen beide 'if'-Zweige ausgeführt werden? Nicht nötig.

    Verwende also komplementäre Bedingungen. Und dann ist die zweite Abfrage gar nicht nötig, dafür gibt es 'else'.

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    1. Hallo Gunnar,

      danke für deine Antwort und ich geb dir Recht, HTML-Kommentarzeichen haben nichts im JavaScript verloren...

      mit dem Fall t1 == t2 hast auch Recht werde ich ändern...

      danke.

  4. Danke erstmal allen die geantwortet haben....

    der "Fehler" liegt darin, das der IE den Befehl windows.innerHeight nicht kennt. (aber alle anderen Browser und das W3C)

    s. http://forum.de.selfhtml.org/archiv/2001/6/t25365/

    aber bisher konnte ich noch keine Alternative finden... kennt jemand eine? Solange werde ich erstmal googeln und wenn ich was gefunden habe hier auch posten.

    Danke.

    1. Hallo Krisrtian!

      der "Fehler" liegt darin, das der IE den Befehl windows.innerHeight nicht kennt. (aber alle anderen Browser und das W3C)

      Ja, der IE braucht extra-Würstchen. Wie wär's für den IE mit
      document.documentElement.clientHeight?

      Etwas suchen in SELFHTML hätte es Dir auch verraten: http://de.selfhtml.org/javascript/objekte/window.htm#inner_height. Unbedingt auch dem Link zu quirksmode.org folgen und die Beispiele testen!

      Interessehalber kannst Du dir auch die Scripte im Thread: https://forum.selfhtml.org/?t=137765&m=894879 anschauen. Da muss ich auch IE und den moderneren Browser trennen ;)

      Viele Grüße aus Frankfurt/Main,
      Patrick

      --

      _ - jenseits vom delirium - _
      <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>
      1. Hallo Patrick,

        danke für deine Antwort, hab alles gefunden ;o)