Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Script inceppato

  1. #1
    Utente bannato
    Registrato dal
    Mar 2003
    Messaggi
    46

    Script inceppato

    Qualcuno mi sa spiegare perchè in questo script:
    <?xml version = "1.0"?>
    <!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv = "Content-Script-Type" content ="text/javascript">
    <meta http-equiv = "content-type" content = "text/html;charset = iso-8859-1" />
    <script>
    var boxData="Data passed are: ";
    function proof(){
    for(i=0;i<document.checkForm.length;i++){
    if(document.checkForm.test[i].checked){
    boxData+=document.checkForm.test[i].value+"; ";
    }
    }
    alert(boxData);
    }
    </script>
    <title>
    </title>
    </head>
    <body>
    <form name="checkForm" onSubmit="proof()">
    Test<input type="checkbox" name="test" selected value="TEsT" />
    Test2<input type="checkbox" name="test" value="TEsT2"/>
    <input type="submit" value="testtesttest" />
    </form>
    </body>
    </html>

    ...l'alert non funziona ? se lo sposto all'interno del loop o fuori dalla funzione ovviamente va, ma là dov'è ora non parte...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non ci possono essere due campi con lo stesso nome.

    Vedi questa modifica:
    codice:
    function proof(){
      for(i=0;i<document.checkForm.length;i++){
        var cc = document.checkForm.elements[i];
        if(cc[i].type=='checkbox' && cc[i].checked){
          boxData+=document.checkForm.elements[i].value+"; ";
        }
      }
      alert(boxData);
    }
    Poi non so dove vuoi mettere l'alert (dentro il for o dentro l'if).

    Nota: la tua pagina e` XHTML: dovresti mettere lo script in un file esterno, oppure inserirlo in un commento CDATA.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente bannato
    Registrato dal
    Mar 2003
    Messaggi
    46
    Ho provato il tuo script ma nonha funzionato... Il problema d'altra parte è legato al solo comando alert che pare non funzionare in quella posizione anche se, per dire, come argomento gli do una normalissima stringa.

    Per inciso...
    L'incompatibilità con xhtml è legato all'utilizzo delle maiuscole in javascript, vero? Dove posso trovare un'esauriente rassegna sul problema, (anche qui in html.it ) ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da dooopcircus
    Per inciso...
    L'incompatibilità con xhtml è legato all'utilizzo delle maiuscole in javascript, vero? Dove posso trovare un'esauriente rassegna sul problema, (anche qui in html.it ) ?
    No, il problema sta nella incompatibilita` di alcuni caratteri, tipo < > = + & ed altri

    In HTML.it c'e` un tutorial su XHTML ...

    Ho provato il tuo script ma nonha funzionato... Il problema d'altra parte è legato al solo comando alert che pare non funzionare in quella posizione anche se, per dire, come argomento gli do una normalissima stringa.
    Quel JS deve funzionare. Prova a mettere lo script fuori dal file, o a togliere il DOCTYPE.

    PS manca anche la chiusura di un tag meta
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente bannato
    Registrato dal
    Mar 2003
    Messaggi
    46
    Ho chiuso il tag meta ed eliminato il doctype e continua a non funzionare nè la mia versione nè la tua. L'unico modo per far funzionare l'alert è eliminare tutto l'if: il mistero rimane ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Andiamo a scavare nel mistero:
    codice:
    function proof(){
      alert("inizio funzione");
      for(i=0;i<document.checkForm.length;i++){
        alert("ciclo n."+i);
        var cc = document.checkForm.elements[i];
        if(cc[i].type=='checkbox' && cc[i].checked){
          alert("il campo e` checkbox ed e` settato");
          boxData += cc[i].value+"; ";
          alert("aggiunto stringa a varibile");
        }
      }
      alert(boxData);
    }
    Non e` che per caso il nome del checkbox sia ripetuto piu` di una volta?
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente bannato
    Registrato dal
    Mar 2003
    Messaggi
    46
    Beh, si, certo, infatti il loop si muove nell'array test, che è il nome comune dei checkbox.Ma dare lo stesso nome ai tag checkbox a quanto ne so è la regola.
    E'come se il loop facesse solo un'iterazione nonstante la lunghezza di checkbox (controllata) sia 3.

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da dooopcircus
    Beh, si, certo, infatti il loop si muove nell'array test, che è il nome comune dei checkbox.Ma dare lo stesso nome ai tag checkbox a quanto ne so è la regola.
    la regola parla dei radio... non dei checkbox.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente bannato
    Registrato dal
    Mar 2003
    Messaggi
    46
    Non oserei mai contraddire un mod, probabilmente ho sbagliato ad interpretare la mia guida O'Reilly. Ve la cito:
    "Sintassi HTML
    Un elemento Checkbox viene creato con tag HTML <input> standard. Spesso si creano gruppi di più elementi Ceeckbox specificando più tag <input> aventi lo stesso attributo NAME"
    Ecco qui l'orogine della mia confusione... che aumenta sempre di più

  10. #10
    Utente bannato
    Registrato dal
    Mar 2003
    Messaggi
    46
    Tanto per complicare ancora un pò le cose provate questo script modificato con degli alert "di debug".Finchè si è dentro il loop va tutto liscio, ma finito il loop stesso lo script salta misteriosamente la funzione alert:


    <head>
    <meta http-equiv = "Content-Script-Type" content ="text/javascript">
    <meta http-equiv = "content-type" content = "text/html;charset = iso-8859-1" />
    <script>
    var boxData="Data passed are: ";
    function proof(){
    for(i=0;i<document.checkForm.length;i++){
    alert("loop n°"+i);
    alert(document.checkForm.test[i].checked)
    if(document.checkForm.test[i].checked){
    boxData+=document.checkForm.test[i].value+"; ";
    alert(boxData);
    }
    }
    alert(boxData);
    }
    </script>
    <title>
    </title>
    </head>
    <body>
    <form name="checkForm" onSubmit="proof()">
    Test<input type="checkbox" name="test" selected value="TEsT" />
    Test2<input type="checkbox" name="test" value="TEsT2"/>
    <input type="submit" value="testtesttest" />
    </form>
    </body>
    </html>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.