Kai: document.getElementById() has no properties

Hi. Habe nach dem Fehler gegoogelt, aber bin eigentlich so gut wie immer hier her gekommen, deshalb frage ich mal.
Soweit ich gelesen habe kommt der Fehler daher, dass das Objekt noch nicht initialisiert ist. Ist es aber, und alle Lösungsvorschläge die ich gefunden habe haben nichts gebracht.

Also, es wird eine Tabelle per HTML aufgebaut. Dann rennt wenn man auf ein bestimmtes Objekt klickt eine Schleife in JS durch die jedes Feld nach gewissen Dingen überprüft.

Und jetzt will ich bei bestimmten Dingen einen Link "über" ein Bild legen:

document.getElementById('b' + durchlauf).setAttribute('href','javascript:move_unit()');

Aber PHP passt doch:

echo "<a id="b".$x.""><img src="img/blank.gif" border="0"></a>";

Kann mir wer bitte sagen was da falsch sein könnte?

  1. Hi,

    Soweit ich gelesen habe kommt der Fehler daher, dass das Objekt noch nicht initialisiert ist.

    Er kommt daher, dass es ein Objekt mit der ID, auf die zugegriffen werden soll, nicht gibt - oder noch nicht.

    document.getElementById('b' + durchlauf).setAttribute('href','javascript:move_unit()');

    setAttribute kann im IE problematisch sein, und javascript: in ein href-Attribut zu schreiben, ist schlicht Unfug.
    Nutze das onclick, und weise diesem die Funktionsreferenz zu.
    {elementreferenz}.onclick = move_unit;

    Aber PHP passt doch:

    Wenn interessiert PHP, wenn es um ein *clientseitiges* Problem geht?
    Genau, hoechstens jemanden, der auf den seltsamen Namen "keine Sau" hoert.

    Kann mir wer bitte sagen was da falsch sein könnte?

    Jemand, dem du ein vollstaendiges, aber auf's wesentliche reduziertes (valides) Online-Beispiel zeigst - also derzeit aktuell noch niemand.

    MfG ChrisB

    1. Ich dachte das der PHP-Teil auch relevant ist, da dort ja der Name festgelegt wird.

      http://lol4me.lima-city.de/jsfehler/jsfehler.php
      Ist leider ein wenig langsam, aber habe keinen besseren Space.

      1. valide ist das jetzt aber nicht. Mit den vielen unnötigen (v)aligns auch ganz schön aufgebläht.

        move_unit musst du schon definieren, befor du einem onclick-Event die Referenz zuweist.

        1. Ups, habe daran jetzt nicht gedacht wie ich auf onclick umgestiegen bin.

  2. Hallo,

    document.getElementById('b' + durchlauf).setAttribute('href','javascript:move_unit()');

    Aber PHP passt doch:

    echo "<a id="b".$x.""><img src="img/blank.gif" border="0"></a>";

    der php-code ist hier keine Hilfe. Schau dir den HTML-Code an und suche nach den Elementen mit der ID. (Browsermenu ->Ansicht ->Quellcode)

    kann aber auch sein, dass dein Schleifenzähler nicht funtioniert.

    document.getElementById('b' + durchlauf).setAttribute('href','javascript:move_unit()');

      
    var id='b' + durchlauf;  
    var elem=document.getElementById(id);  
      
    if (elem) {  
      elem.setAttribute('href','javascript:move_unit()');  
      }  
    else {  
      alert("Element nicht gefunden - id:"+id);  
      }  
    
    

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·