getElementById im IE

blueflash

Member of Honour
Hi,

wenn ich in meinem Script mittels getElementById() ein mit einer _eindeutigen_ id versehenes Element auswählen will, dann gibt der IE nur null zurück, während es im FF einwandfrei funktioniert. Ich habe weder names vergeben, noch gleichnamige Variablen im Script gesetzt. Was macht der IE da wieder anders?

mfg
 

Mackz

Member of Honour
Normal gibts soweit ich beim Ansprechen mit getElementById() beim IE keine Unterschiede.
Ich weiß ja nicht was du machst, aber der Beispielcode funktioniert im IE6/IE7/FF/Opera ohne Probleme.

Code:
<span id="test">bla</span>
<script>
document.getElementById("test").style.backgroundColor = "#ff0000";
alert(document.getElementById("test").innerHTML);
</script>

Evtl. postest du mal den Codeabschnitt.
 

blueflash

Member of Honour
Das ganze ist eine slideshow.
Folgendermaßen sind divs definiert:

Code:
<div id="frame">
        <div id="leftdiv">
                <a href="Joomla"><img src="test1.jpg" id="leftimg"/></a>
        </div>
        <div id="centerdiv">
                <a href="Joomla"><img src="test2.jpg" id="centerimg"/></a>
        </div>
        <div id="rightdiv">
                <a href="Joomla"><img src="test3.jpg" id="rightimg"/></a>
        </div>
</div>

im script gibt aber der Aufruf in

Code:
window.setTimeout(move,tick,document.getElementById('leftdiv'),0);

Nur null als Objekt zurück. Im FF hauts prima hin.

Wer den ganzen Code sehen möchte:
http://nooners.de/indexv.html
 

:::Lük:::

New member
Evtl. ist das DOM-Element mit der Id leftdiv zum Zeitpunkt des Aufrufes von document.getElementById("leftdiv") noch gar nicht verfügbar.

Dieses Problem kannst du lösen, indem du den Code erst beim vollständigen Laden der Seite agieren läst. Also in etwas so:

Code:
window.onload = funtion () {
 //Code
 //..
}
 

Mackz

Member of Honour
@ blueflash:
Hast du da gerade dran gearbeitet?
Ich hatte mir das gerade mal näher angeguckt und hatte da ein paar JS - Fehler (Opera und IE), wollte gerade posten, aber jetzt geht es sowohl im IE6 als auch in Opera. Nur mein FF hängt sich immer auf , daher kann ich dir da leider nicht die Ausgabe der Fehlerkonsole pasten.
 

Harry Boeck

New member
nach meiner Erfahrung unterstützt der IE nicht die Form von "setTimeout", bei der man einen Funktionsnamen und Parameter übergeben kann, sondern nur die Form, wo man einen String übergibt, in dem der auszuführende Javascriptcode im Klartext steht...

Die Referenz: http://developer.mozilla.org/en/docs/DOM:window.setTimeout

Deine Benutzung:
Code:
timeoutID = window.setTimeout(func, delay[, param1, param2, ...]);

IE's Unterstützung:
Code:
timeoutID = window.setTimeout(code, delay);
 

blueflash

Member of Honour
@Mackz: Ich habe daran gearbeitet. Es läuft jetzt unter dem IE. Der FF hängt sich auf, weil er das dritte xmlHttp Request nicht absetzt - sehr seltsam.

@Harry Boeck:
Das wars. Ich habs gelöst, in dem ich "higher order strings" verwende *grusel*
 
Oben