Dynamische Wertzuweisung
Zabi
- javascript
Hallo zusammen,
ich habe ein Problem mit der dynamischen Wertzuweisun an HTML-Element <DIV>.
Hier ist die Funktion:
function ausgeben() {
if (http.readyState == 1) {
document.write("wird noch ermittelt...");
} else if (http.readyState == 4) {
var daten = http.responseText;
daten = eval("("+daten+")");
document.getElementsByName("Verfuegbarkeit")[i].firstChild.nodeValue=;
for (var i = 0; i < daten.length; i++) {
var lin = daten[i];
var test = lin.P;
alert(lin.P);
document.getElementById(test).firstChild.nodeValue=lin.A;
}
}
<table>
<tr>
<td>
<div id="#FoundItem:ItemID#"> </div>
</td>
</tr>
</table>
Diese Funktion rufe ich im Zusammenhang mit einer AJAX-Anwendung auf. So läuft die Funktion in IE einwandfrei, nicht aber in Firefox. In Firefox bekomme ich die Meldung: 'document.getElementById(test) has no properties'.
Wenn ich die Zeile alert(test); auskommentiere, dann läuft das ganz auch nicht mehr unter IE, dort bekomme ich dann die Meldung: 'Object erforderlich'.
Kann mir vielleich einer von Euch sagen, was da falsch ist?
Beste Grüße, Zabi
Hallo Zabi,
wer ruft wann und wo die Funktion "ausgeben" auf? Existiert zu diesem Zeitpunkt das DIV schon?
Gruß, Jürgen
Hi Jürgen,
Hallo Zabi,
wer ruft wann und wo die Funktion "ausgeben" auf? Existiert zu diesem Zeitpunkt das DIV schon?
Die Methode wird im HEAD des Dokuments so aufgerufen:
var http = null;
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (http != null) {
http.open("GET", "#HTTP-REQUEST#", true);
http.onreadystatechange = ausgeben;
http.send(null);
}
Dein Hinweis war richtig, das <DIV> existierte zu der Zeit noch nicht, und deshalb dieser Fehler.
Besten Dank,
Zabi
Gruß, Jürgen
Hi,
function ausgeben() {
if (http.readyState == 1) {
document.write("wird noch ermittelt...");
Ist an dieser Stelle das Dokument schon fertig geladen? Dann überschreibst du hier nämlich die komplette Seite.
} else if (http.readyState == 4) {
var daten = http.responseText;
daten = eval("("+daten+")");
document.getElementsByName("Verfuegbarkeit")[i].firstChild.nodeValue=;
for (var i = 0; i < daten.length; i++) {
var lin = daten[i];
var test = lin.P;
alert(lin.P);
document.getElementById(test).firstChild.nodeValue=lin.A;
}
}
<table>
<tr>
<td>
<div id="#FoundItem:ItemID#"> </div>
Diese id finde ich etwas komisch, aber keine Ahnung, ob sowas erlaubt ist.
</td>
</tr>
</table>
Warum eine Tabelle mit einer Zeile und einer Spalte?
Diese Funktion rufe ich im Zusammenhang mit einer AJAX-Anwendung auf. So läuft die Funktion in IE einwandfrei, nicht aber in Firefox. In Firefox bekomme ich die Meldung: 'document.getElementById(test) has no properties'.
Das liegt wohl daran, dass du das Element, das du ansprechen willst vorher mit document.write() überschrieben hast.
Wenn ich die Zeile alert(test); auskommentiere, dann läuft das ganz auch nicht mehr unter IE, dort bekomme ich dann die Meldung: 'Object erforderlich'.
Diese Zeile kommt in deinem Beispielcode garnicht vor.
Kann mir vielleich einer von Euch sagen, was da falsch ist?
Verwende anstatt document.write() etwas anderes.
mfG,
steckl