Ragazzi, vi risulta che un array di checkbox abbia dei problemi quando viene passato un solo valore (tra l'altro in un layer)?
Mi spiego meglio semplicemente.
Ho un codice javascript che crea un array di checkbox e lo visualizza in un layer dinamico
come vedete il pulsante 'Cancella Selezionati' chiama la funzione CancellaDettaglioMultiDaCheckBox:codice:var layerBox = document.getElementById("MioLayer"); stringaHTML = ""; stringaHTML += "<input type='checkbox' name='checkboxMod[]' value='valore1'>"; stringaHTML += "<input type='checkbox' name='checkboxMod[]' value='valore2'>"; stringaHTML += "<input type='checkbox' name='checkboxMod[]' value='valore3'>"; stringaHTML += "<input type='button' value='Cancella Selezionati' onclick='CancellaDettaglioMultiDaCheckBox(\"checkboxMod[]\")'>"; layerBox.innerHTML = stringaHTML; layerBox.style.visibility = "Visible"; layerBox.style.display="block";
Praticamente funziona tutto alla grande, nel senso che si riesce a ciclare gli elementi della checkbox che seleziono, nell'esempio iniziali ve ne ho messi 3... ma ho il problema quando l'elemento è uno soltanto:codice:function CancellaDettaglioMultiDaCheckBox(txtobjCB){ //Qui viene passato l'oggeto checkbox (eg: "checkboxMod[]") in formato stringa creato nel layer chks = document.forms[0].elements[txtobjCB]; for (var i=0;i<chks.length;i++){ if ( chks[i].checked ){ alert("selezionato: " + i); contaModTot++; } } }
in questo caso la proprietà chks.length ritorna come valore undefined e non entra nel ciclo for....codice:var layerBox = document.getElementById("MioLayer"); stringaHTML = ""; stringaHTML += "<input type='checkbox' name='checkboxMod[]' value='valore1'>"; stringaHTML += "<input type='button' value='Cancella Selezionati' onclick='CancellaDettaglioMultiDaCheckBox(\"checkboxMod[]\")'>"; layerBox.innerHTML = stringaHTML; layerBox.style.visibility = "Visible"; layerBox.style.display="block";
come mai ?

Rispondi quotando