Hallo zusammen,
mit diesem Beitrag hab ich dann wohl mein Jubiläum oder auch meine Entjungferung in diesem Forum.
Nun auch schon zu meinem Problem. Ich habe eine Form, nur mit Checkboxen ungefähr mit folgendem Aufbau:
- Hauptkategorie (Name = 10, ID = 20)
------ Unterkategorie (Name = 20, ID = 21)
----------- Unter-Unterkategorie (Name = 21, ID = 22)
----------- Unter-Unterkategorie (Name = 21, ID = 23)
----------- Unter-Unterkategorie (Name = 21, ID = 24)
----------- Unter-Unterkategorie (Name = 21, ID = 25)
------ Unterkategorie (Name = 20, ID = 26)
----------- Unter-Unterkategorie (Name = 26, ID = 27)
----------- Unter-Unterkategorie (Name = 26, ID = 28)
----------- Unter-Unterkategorie (Name = 26, ID = 29)
Jeder einzelne Punkt ist auswählbar, wird ein Punkt mit Unterpunkten ausgewählt, werden auch alle Unterpunkte automatisch ausgewählt. Beim Auswählen wird die Funktion "checkPages" mit der aktuellen ID als Parameter aufgerufen.
Wegen dem darauffolgenden Prozedere werden (wie im Code ersichtlich) HTML Elemente erzeugt und wieder gelöscht - macht euch einfach keine Gedanken darüber...
Im Firefox funktioniert es genauso und im Internet Explorer leider nicht... Da kommt die Fehlermeldung "Out of Memory".
Hier mein Code:
Ich hoffe jemand kann mir helfen... Ich bin kurz vorm Verzweifeln, da ich auch noch totaler Anfänger in JS bin...
Gruß,
Seitz
mit diesem Beitrag hab ich dann wohl mein Jubiläum oder auch meine Entjungferung in diesem Forum.
Nun auch schon zu meinem Problem. Ich habe eine Form, nur mit Checkboxen ungefähr mit folgendem Aufbau:
- Hauptkategorie (Name = 10, ID = 20)
------ Unterkategorie (Name = 20, ID = 21)
----------- Unter-Unterkategorie (Name = 21, ID = 22)
----------- Unter-Unterkategorie (Name = 21, ID = 23)
----------- Unter-Unterkategorie (Name = 21, ID = 24)
----------- Unter-Unterkategorie (Name = 21, ID = 25)
------ Unterkategorie (Name = 20, ID = 26)
----------- Unter-Unterkategorie (Name = 26, ID = 27)
----------- Unter-Unterkategorie (Name = 26, ID = 28)
----------- Unter-Unterkategorie (Name = 26, ID = 29)
Jeder einzelne Punkt ist auswählbar, wird ein Punkt mit Unterpunkten ausgewählt, werden auch alle Unterpunkte automatisch ausgewählt. Beim Auswählen wird die Funktion "checkPages" mit der aktuellen ID als Parameter aufgerufen.
Wegen dem darauffolgenden Prozedere werden (wie im Code ersichtlich) HTML Elemente erzeugt und wieder gelöscht - macht euch einfach keine Gedanken darüber...
Im Firefox funktioniert es genauso und im Internet Explorer leider nicht... Da kommt die Fehlermeldung "Out of Memory".
Hier mein Code:
Code:
function checkPages(checkId) { var field = document.getElementById(checkId); counter = 0; if(field.checked == true) checkAllPages(checkId); else uncheckAllPages(checkId); } function uncheckAllPages(checkId) { var fields = document.getElementsByName(checkId); if(fields.length > 0) { for(var i = 0; i <= fields.length; i++) if(fields[i] != undefined) { fields[i].checked = false; var id = fields[i].getAttribute('id') + '-hidden'; removeElement(id); uncheckAllPages(fields[i].getAttribute('id')); } } else removeElement(checkId + '-hidden'); } function checkAllPages(checkId) { var fields = ""; fields = document.getElementsByName(checkId); if(fields.length > 0) { for(var i = 0; i <= fields.length; i++) if(fields[i] != undefined) { fields[i].checked = true; var newInput = document.createElement('input'); newInput.type = 'hidden'; newInput.id = fields[i].getAttribute('id')+'-hidden'; newInput.name = 'uid[]'; newInput.value = fields[i].getAttribute('id'); fields[i].parentNode.insertBefore(newInput, fields[i]); checkAllPages(fields[i].getAttribute('id')); } } else { document.getElementById(checkId).checked = true; var newInput = document.createElement('input'); newInput.type = 'hidden'; newInput.id = checkId + '-hidden'; newInput.name = 'uid[]'; newInput.value = checkId; document.getElementById(checkId).parentNode.insertBefore(newInput, document.getElementById(checkId)); } } function removeElement(id) { var element = document.getElementById(id); element.parentNode.removeChild(element); }
Gruß,
Seitz
Comment