NP: Fehlermeldung: 'style.textDecoration' ist Null oder kein Objekt.

Guten Abend,

ich habe eine Navigation, die aus zwei Teilen besteht: Bilder und Text (unabhängig voneinander). Wenn ich über den Text gehe, werden andere Bilder angezeigt und der Text wird unterstrichen, bei den Bildern das selbe.

Funktioniert soweit super, nur der IE wirft einen Fehler aus, wenn ich mit der Maus über die Rubrik gehe, deren Seite ich gerade bereits vor mir aufgerufen sehe. Aber leset erstmal selbst:

Meine Funktion:

  
 function Bildwechsel(Bildnr,Bildobjekt,Element) {  
  window.document.images[Bildnr].src = Bildobjekt.src;  
  if (Element.style.textDecoration == "underline"){  
   Element.style.textDecoration = "none";  
  }  
  else {  
   Element.style.textDecoration = "underline";  
  }  
 }  

Aufruf über Textlink:

  
<a id="Startseite" class="footer_link" href="./index.php?content=startseite" onMouseOver="Bildwechsel(0,gelb,Startseite)" onMouseOut="Bildwechsel(0,normal,Startseite)">Startseite</a> ::  

Aufruf über Bildlink:

  
<a href="./index.php?content=startseite" onMouseOver="Bildwechsel(0,gelb,Startseite)" onMouseOut="Bildwechsel(0,normal,Startseite)"><img src="./gfx/navi/normal.jpg" border="0"></a>  

Prinzipiell funktioniert es, mit einer Ausnahme: Ist schwierig das zu erklären, aber der Fehler kommt immer nur dann, wenn ich mit der Maus über den Navigationspunkt bewege, auf dessen gelinkter Seite ich mich bereits befinde.

Nehmen wir also an, ich bin in der Rubrik "Kontakt". Ich kann über die gesamte Navigation gehen und immer wird der entsprechende Link korrekt unterstrichen und beim MouseOut wieder auf "none" gesetzt. Mit einer Ausnahme: Wenn ich über "Kontakt" fahre, denn dann passiert folgendes: Grafisch der richtige Effekt, der Browser schmeißt jedoch diese Nachricht aus: 'style.textDecoration' ist Null oder kein Objekt.

Ich verstehe nicht, warum es gerade immer nur bei der bereits aktiven Rubrik so kommt und weiß dementsprechend auch nicht wirklich, wo ich mit einer Fehlerbehebung ansetzen soll.

Hat jemand eine Idee, warum das gerade dort kommt und wie ich es wieder in Ordnung bekomme? Danke.

Die JS Konsole von Mozilla sagt IMMER (also bei allen Menüpunkten) "Error: [...] is not defined.", falls das was hilft. Dafür wird dort kein spezieller Fehler bei der jeweils aktiven Rubrik ausgeworfen.

Wenn noch Rückfragen bestehen, dann stellt sie, ich weiß nicht, was für euch wichtig ist. Also nochmal danke.

MfG
NP

  1. hi,

    <a id="Startseite" class="footer_link" href="./index.php?content=startseite" onMouseOver="Bildwechsel(0,gelb,Startseite)" onMouseOut="Bildwechsel(0,normal,Startseite)">Startseite</a> ::

    Startseite - ist das eine javascript-variable? wenn ja, wo hast du diese definiert?
    wenn nein (und davon gehe ich), dann meinst du wohl stattdessen einen string - also schreibe diesen auch als solchen!

    onMouseOver="Bildwechsel(0,gelb,'Startseite')"

    der Browser schmeißt jedoch diese Nachricht aus: 'style.textDecoration' ist Null oder kein Objekt.

    Startseite ist nicht automatisch als javascript-objekt verfügbar, nur weil du ein HTML-element mit dieser ID hast.

    also wird der browser hier mit grosszügiger fehlerkorrektur wahrscheinlich von selbst Startseite in einen string konvertieren.
    dieser hat aber natürlich keine eigenschaft namens "style".

    also: übergebe ordentliche strings an deine funktion.

    der zugriff

    Element.style.textDecoration = "none";

    funktioniert natürlich so auch nicht, stattdessen musst du mit der ID "Startseite" (die du ja jetzt als string im parameter Element übergeben hast) zugreifen:

    document.getElementById(Element).style.textDecoration = "none";

    gruss,
    wahsaga

    1. Guten Tag wahsaga,

      ich danke dir, jetzt funktioniert alles - selbst mit Mozilla Firebird - völlig korrekt und fehlerfrei.

      Ich arbeite selten mit Java Script, deshalb wohl auch diese Patzer (Strings nicht als Strins gekennzeichnet).

      Gerade da sehe ich auch das Problem: Browser sind mit ihrer Fehlerkorrektur viel zu tolerant. Hätte der Browser direkt alle nicht angezeigt, hätte ich gleich gewusst, dass es so gar nicht richtig sein kann.

      Nunja, danke jedenfalls.

      MfG
      NP