getElementByID wird nach geändertem DOM nicht gefunden
ernst Groß
- javascript
0 Gunnar Bittersmann0 Ernst Groß0 steckl0 Ernst Groß0 steckl
0 steckl0 Struppi
Hi,
in einem Script habe ich via innerHTML dem DOM neue Knoten hinzugefügt. Anschließend möchte ich auf einen der neuen Knoten zugreifen mit document.getElementByID.
Beim FireFox geht das auch wunderbar nur der IE findet die neuen Knoten nicht:
CODE:
newHTML = '<input type="text" id="'+newid+'" name="'+id+'" value="">';
document.getElementById(id).innerHTML= newHTML;
document.getElementById(newid).value = newValue;
was muß man im IE machen?
Vielen Dank für Eure Hilfe
Ernst Groß
egross()gmx.net
Hello out there!
Beim FireFox geht das auch wunderbar nur der IE findet die neuen Knoten nicht:
Kann dein Problem nicht nachvollziehen. (IE 6)
See ya up the road,
Gunnar
Hello out there!
Beim FireFox geht das auch wunderbar nur der IE findet die neuen Knoten nicht:
Kann dein Problem nicht nachvollziehen. (IE 6)
See ya up the road,
Gunnar
im html steht irgendwo eine Tabelle mit:
<td ondblclick="tableToInput('o_z3s2')"> blblabla</td>
javascript:
function tableToInput(id) {
oldID = 'o_'+id.substr(2); // ab dem zweiten Zeichen
oldValue = document.getElementById(oldID).value;
newHTML = '<input type="text" id="'+id+'" name="'+id+'" value=""><input type="submit" name="senden" value="senden">';
document.getElementById(id).innerHTML= newHTML;
document.getElementById(id).value = oldValue;
}
Alternativ könnte man ja oldValue in das value-Attribut schreiben, allerdings klappt das nicht sobald Anführungszeichen in der Tablle auftauchen. Anführungszeichen zerkloppen den ganzen html-Code dann!
Also dachte ich mir, ich springe wieder in den Knoten und schreibe mein value anschließend rein. Wie gesagt, im FF geht das ohne Probleme im IE 7 nicht.
Vielen Dank für Deine Hilfe
Ernst
Hi,
javascript:
function tableToInput(id) {oldID = 'o_'+id.substr(2); // ab dem zweiten Zeichen
was machst du mit oldID?
oldValue = document.getElementById(oldID).value;
newHTML = '<input type="text" id="'+id+'" name="'+id+'" value=""><input type="submit" name="senden" value="senden">';
In deinem Ausgangsposting hattest du hier id="'+newId' stehen. Ist das jetzt ein Tippfehler?
document.getElementById(id).innerHTML= newHTML;
So schreibst du jetzt in das Element mit der ID id nochmal ein Element mit der ID id. Das darf so nicht sein, da die ID immer eindeutig sein muss.
document.getElementById(id).value = oldValue;
}
Alternativ könnte man ja oldValue in das value-Attribut schreiben, allerdings klappt das nicht sobald Anführungszeichen in der Tablle auftauchen. Anführungszeichen zerkloppen den ganzen html-Code dann!
Anfuehrungszeichen koenntest du doch auch maskieren/codieren.
mfG,
steckl
Hi,
Hi,
document.getElementById(id).innerHTML= newHTML;
So schreibst du jetzt in das Element mit der ID id nochmal ein Element mit der ID id. Das darf so nicht sein, da die ID immer eindeutig sein muss.
ja die Function hat sich inzwischen dreimal wieder geändert!
Das ID's eindeutig sind ist mir klar.
Frage: wenn ich mit der Methode innerHTML einen Knoten überschreibe, der eine ID hatte, kann ich diese ID doch wiederverwenden an anderer Stelle? Es bleibt ja eindeutig?
Oder ist das genau das Problem?
Danke für Deine Hilfe,
Ernst
Hi,
Frage: wenn ich mit der Methode innerHTML einen Knoten überschreibe, der eine ID hatte, kann ich diese ID doch wiederverwenden an anderer Stelle? Es bleibt ja eindeutig?
Weiss ich nicht, sollte aber eigentlich gehen. Aber das machst du ja nicht.
Oder ist das genau das Problem?
Das Problem ist, dass du mit innerHTML nicht den Knoten ueberschreibst, sondern nur dessen Inhalt.
mfG,
steckl
Hi,
newHTML = '<input type="text" id="'+newid+'" name="'+id+'" value="">';
document.getElementById(id).innerHTML= newHTML;document.getElementById(newid).value = newValue;
Was steht denn in den Variablen id und newid?
Wenn mich nicht alles taescht muss die id mit einem Buchstaben beginnen.
mfG,
steckl
in einem Script habe ich via innerHTML dem DOM neue Knoten hinzugefügt. Anschließend möchte ich auf einen der neuen Knoten zugreifen mit document.getElementByID.
Du fügst keinen neuen Knoten zu, sondern du überschreibst den HTML Code innerhalb eines Knotens.
Beim FireFox geht das auch wunderbar nur der IE findet die neuen Knoten nicht:
CODE:
newHTML = '<input type="text" id="'+newid+'" name="'+id+'" value="">';
document.getElementById(id).innerHTML= newHTML;document.getElementById(newid).value = newValue;
Irgendwie ist das unlogisch du hast einen Knoten mit einer ID füllst darin ein Element mit der gleichen ID und willst dann dieses Element rausfischen. Was ist das denn für ein Objekt was du da neu beschreibst? wenn es ein input Element ist, dann ist das was du machst überflüssig und falsch, da ein input Element kein innerHTML hat. Ist es ein anderes solltest du mit createElement und appendChild arbeiten.
Struppi.