Oppure

Loading
31/10/17 20:19
mark22
Buonasera,
vorrei chiedervi come mai il mio codice non funziona per potermi ricavare i valori delle opzioni di un select html tramite javascript.
Questo è il mio codice html:
<form name="myForm">
              <select multiple="multiple" class="lista" name="archivio">
                    <option value="1">Caffè</option>
                   ...
</form>

Javascript ,dimOpz sta per dimensione dell'array opzioni che verrà aggiornata a ogni "lettura", j è usato come indice per opzioniSelezionate:
      var dimOpz=0;
      function aggiungi(){
        var opzioni =[];
        opzioni= document.forms.myForm.archivio.options;
        var opzioniSelezionate = [];
        var lenght=opzioni.length;
        var j=0;
        for(var i=0;i<lenght;i++)
            if(opzioni[i].selected){
                opzioniSelezionate[j].concat(opzioni[i].value);
                j++;
              }     
        dimOpz+=j;
      }

La console del browser mi dice che c'è un errore nella riga 10..
Probabilmente è qualche errore stupido..:-|:-|Grazie in anticipo
Ultima modifica effettuata da mark22 31/10/17 20:22
aaa
31/10/17 21:27
pierotofy
Ciao,

potresti allegare un archivio con il codice completo ed eseguibile, oppure pubblicarlo da qualche parte sul web?
Il mio blog: piero.dev
01/11/17 16:09
mark22
Ecco il file: ufile.io/…
Ultima modifica effettuata da mark22 01/11/17 16:12
aaa
02/11/17 14:58
pierotofy
L'errore e' a causa del modo in cui stai popolando l'array opzioniSelezionate. L'array ha dimensioni 0, ma usando j stai cercando di inserire gli elementi in una posizione dell'array che ancora non esiste.

Prova con:

      var costoTot=0;var dimOpz=0;
      function aggiungi(){
        var opzioni =[];
        opzioni= document.forms.myForm.archivio.options;
        var opzioniSelezionate = [];
        var lenght=opzioni.length;

        for(var i=0;i<lenght;i++)
            if(opzioni[i].selected){
              opzioniSelezionate.push(opzioni[i].value);
            }
        dimOpz+=opzioniSelezionate.length;

        console.log(dimOpz, opzioniSelezionate); //  (3) ["5.50", "12", "12"]
      }
Il mio blog: piero.dev
03/11/17 16:36
mark22
Ah ecco.. grazie mille! :) :)
aaa