select Feld austauschen
David
- javascript
Hallo,
ich würde gerne wissen wie man ein html-element mit javascprict austauschen kann. Problem dabei ist das ich auf der einen Seite einen XMLHTTPRequest mache und zusätzliche Formularelemente nachlade beim erneuten Aufruf des Reqeust sollen aber eben nicht neue Felder hinzugefügt werden sondern bestehende wenn vorhanden ersetzt werden.
Schwierig zu erklären, vieleicht kann es ja trotzdem jemand verstehen...
function cascade(what,where,path,copy) {
req.open('get', '<?php echo $paths[includes]; ?>'+ path + '/cascade.php?s='+ what.value+'&p=' + where);
req.onreadystatechange = function() { cascade_handleResponse(where,copy); }
req.send(null);
}
function cascade_handleResponse(where,copy) {
if(req.readyState == 4){
if (copy == true){
var last_elements = document.getElementById(where).cloneNode(true);
document.getElementById(where).innerHTML =last_elements.innerHTML+req.responseText;
}else{
document.getElementById(where).innerHTML =req.responseText;
}
}
}
Hallo,
document.getElementById(where).innerHTML =last_elements.innerHTML+req.responseText;
hättest du mit einem anderen Browser als dem IE getestet, würde dein Ansatz evtl funktionieren.
die sichere Methode, um ein select-Element zu füllen ist diese
var select=document.getElementById(where);
var op=new Option(text,value);
select.options[select.options.length]=op;
auch ein
select.appendChild(op); // funktioniert nicht mit jeder IE-Version
Gruß plan_B
Ja meine Funktion ging auch in Firefox muss ehrlich gestehn es noch ned mal im IE getestet zu haben...
Aber um das mal näher aus zu führen. Ich habe eine Formular mit einem SelectFeld bei Auswahl wird durch den XMLHTTPRequest ein neues SelectFeld erzeugt und bei auswahl de neuen Feldes wieder eines. Nun soll aber bei der Auswahl des 2 Select Feldes keine neues Select erstellt werden sondern einfach nur das bestehende überschrieben werden.
btw..Ich weiss noch nicht so recht mit deiner Lösung umzugehn.
Der Inhalt des zuletzt erzeugten Select Feldes befindet sich in req.ResponseText und wird immer an den gespeicherten Inhalt des
Formulars angehängt:
var last_elements = document.getElementById(where).cloneNode(true);
document.getElementById(where).innerHTML=last_elements.innerHTML+req.responseText;