Ich versuche, einen Javascript-Befehl zu erstellen, der Dropdown-Felder nacheinander erstellt. Wenn ich jedoch ein Dropdown-Menü ändere, sollte das Dropdown-Menü für Kinder nicht mehr angezeigt werden. Dies ist das javascript:JavaScript-Code wird zweimal ausgeführt, nachdem es dreimal verwendet wurde
var categorycount = 0;
function categorygenerate() {
//for testing purposes
var categoryarray = new Array(), i;
for (i = 0; i < 2; i++) {
categoryarray[i] = Math.random();
}
return categoryarray;
}
function delete_category(selectedcategory){
restar = categorycount - selectedcategory;
categoria = "category" + restar;
var element = document.getElementById(categoria);
element.parentNode.removeChild(element);
categorycount = restar;
}
function dropdowngenerate(divname) {
comparelevel = divname.slice(-1);
if (comparelevel != categorycount){
delete_category(comparelevel)
}
else{
++categorycount;
var categoria = "category" + categorycount;
var newDiv=document.createElement('div');
var html = '<select>', categories = categorygenerate(), i;
for(i = 0; i < categories.length; i++) {
html += "<option value='"+categories[i]+"'>"+categories[i]+"</option>";
}
html += '</select>';
newDiv.innerHTML= html;
document.getElementById(divname).appendChild(newDiv);
newDiv.setAttribute("id",categoria);
newDiv.setAttribute('onchange', "dropdowngenerate('"+categoria+"');");
}
}
Und das ist die HTML:
<div id="category0">
<select onchange="dropdowngenerate('category0');">
<option>test1</option>
<option>test2</option>
<option>test3</option>
</select>
<br>
</div>
Das Skript funktioniert gut, die ersten 3-mal, aber im vierten Dropdown, wird das Skript zweimal aufgerufen. Das erste Mal, es heißt, es funktioniert einwandfrei. Beim zweiten Mal wird es so ausgeführt, als wäre das zweite Dropdown (Kategorie1) geändert worden und löscht den Rest der Dropdown-Liste.
Irgendwelche Hinweise?
Vielleicht wird Ihr Onchange-Ereignis mehr als einmal erstellt und nach einer Weile zweimal aufgerufen. – PmanAce
Sie haben den Code für die Funktion categorygenerate() nicht veröffentlicht. vielleicht ist das Problem dort – aemorales1
Sie können Ihre Frage bearbeiten, um ein funktionierendes Codebeispiel zu machen (mit der Schaltfläche "JavaScript/HTML/CSS Snippet"), das Ihr Problem demonstriert. – Igor