ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
240
240
EMPFEHLEN
-
Hallo
ich habe folgendes Script:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
<script type=\"text/javascript\" language=\"javascript\"> <!-- elements = new Array(); elements[1] = new Array(\"foo\", \"bar\"); elements[2] = new Array(\"bar\"); elements[3] = new Array(\"foo\"); function change() { // vorhandene options aus Select-Field löschen alert ('CHANGE'); if (document.all) { alert ('CHANGE2'); document.formName.elemList.length = 0; } else{ // vorhandene options aus Select-Field löschen alert ('CHANGE3'); var anzChilds = document.getElementById(\"elemList\").childNodes.length; for(var i=0; i<anzChilds; i++) { document.getElementById(\"elemList\").removeChild(document.getElementById(\"elemList\").childNodes[i]); } } alert ('CHANGE4'); var chooserValue = document.getElementById(\"chooser\").value; for(i=0; i<elements[chooserValue].length; i++) { var newOption = document.createElement(\"option\"); // value-Attribut des OPTION-Tags erzeugen var optionValue = document.createAttribute(\"value\"); optionValue.nodeValue = elements[chooserValue][i]; newOption.setAttributeNode(optionValue); // Daten zwischen <option></option> setzen var optionText = document.createTextNode(elements[chooserValue][i]); newOption.appendChild(optionText); document.getElementById(\"elemList\").appendChild(newOption); } } //--> </script> ";
Führe ich dieses aus, bekomme ich die alert-Box "CHANGE" und "CHANGE2" zu sehen. Jedoch niemals eine "CHANGE4". Eigentlich müsste er doch weiterlaufen oder nicht?
Das ist der HTML Code dazu:
Code :1 2 3 4 5 6 7 8 9 10 11
echo " <select size=\"1\" name=\"chooser\" id=\"chooser\" onchange=\"change()\"> <option value=\"\" selected=\"selected\"> - Bitte auswählen - </option> <option value=\"1\">Elem A</option> <option value=\"2\">Elem B</option> <option value=\"3\">Elem C</option> </select> <select size=\"4\" name=\"elemList\" id=\"elemList\"> <option>Bitte wählen Sie zuerst etwas aus</option> </select> ";
Da die Ausgabe in PHP erfolgt sind die " mit einem \" versehen. Das ist korrekt.
Wer kann mir helfen?
-
13.11.09 12:09 #2
Hallo,
ich bin mir nicht ganz sicher.
aber gibt es ein }else{ bei Funktionen?
Du hast
Code :1 2 3 4 5
function change(){ ... }else{ ... }
gemacht.
-
Moin Maik,
auf den 1. Blick würde ich folgendes verdächtigen:Code :1 2 3
for(var i=0; i<anzChilds; i++) { document.getElementById(\"elemList\").removeChild(document.getElementById(\"elemList\").childNodes[i]); }
Also angenommen, #elementList hat mehr als 1 childNode.
der 1. geht immer OK
sobald du jedoch die Hälfte der Kindknoten entfernt hast, greift dein removeChild() ins Leere, weil sich ja mit jeder Ausführung die Anzahl der Kindknoten um 1 reduziert.
Also..bspw..
2. Kindknoten
1.Aufruf....1. Kindknoten entfernen(es gibt jetzt nur noch 1 Kindknoten)
2. Aufruf....2. Kindknoten entfernen(Fehler, weil es nur noch 1 Kindknoten gibt)
Lösungsvorschlag:
fange mit dem letzten Kindknoten an, und arbeite dich zum ersten vor, oder arbeite mit while und entferne so lange den 1. Kindknoten, wie es einen gibt.
-
Danke,
wie kann ich denn prüfen ob der Knoten existiert? Gibt es sowas wie:
document.getElementById(\"elemList\").existsChildNodes[i] ?
-
Wenn du die Anzahl Childnodes kennst(und die kennst du)....dann weisst du auch ob eine bestimmter childNode existiert.
i muss mindestens um 1 kleiner sein als die Anzahl der childNodes, dann existiert der Knoten.
Ähnliche Themen
-
Schleife bricht bei 1 ab?
Von tomengel im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 02.07.09, 18:36 -
shell_exec() bricht ab
Von Passer im Forum Linux & UnixAntworten: 2Letzter Beitrag: 19.06.09, 00:12 -
Warum <div/> statt <span/> - Warum muss ich <a/> formatieren ?
Von angelikamorgan im Forum CSSAntworten: 4Letzter Beitrag: 26.08.08, 14:50 -
foreach bricht ab
Von penntuete im Forum PHPAntworten: 2Letzter Beitrag: 10.02.08, 23:39 -
Warum bricht mein Layout zsuammen?
Von PHPer im Forum HTML & XHTMLAntworten: 7Letzter Beitrag: 05.08.04, 11:06





Zitieren
Login





