18/12/11 15:52
Maury91
//sono scritto in javascript ! non in delphi .-. function aj_check(check,father,sons) { if ((father != '')&&(!check.checked)) document.getElementById(father).checked = false; if ((sons != '')&&(check.checked)) { x = document.getElementById(sons); for (i=0;i<x.childElementCount;i++) { if (x.children[i].nodeName == 'INPUT') { x.children[i].checked=true; ckid = x.children[i].id; if (ckid!='') aj_check(x.children[i],'',ckid.substr(0,ckid.length-1)); } } } }
ho fatto questo script che ha lo scopo di gestire i checkbox in una "directory di checkbox"
in pratica facciamo che ho questo albero di checks
o
o
o
o
o
o
o
la funzione si comporta in modo anomalo e premendo il primo li attiva cosi
x
x
x
x
o
o
o
se premo quello sopra tutti tutti quelli sotto devono essere attivi, e se premo uno di quelli sotto disattivandolo mi disattiva quello sopra
il problema è questo, il browser chrome (su FF non ho provato) per qualche oscuro motivo quando richiamo la funzione facendo la ricorsione, la funzione richiamata può modificare le variabili locali della funzione che la chiama... e in questo modo lo script arriva al nodo più infondo fa il for li li attiva tutti e poi finisce senza poter attivare gli altri nodi
allego un htm di prova
EDIT :
usando un setTimeout per richiamare funziona
lo allego, è il file 2
Ultima modifica effettuata da Maury91 18/12/11 16:49
aaa