Visualizzazione dei risultati da 1 a 6 su 6

Discussione: array impazzito

  1. #1

    array impazzito

    Premetto che è poco che utilizzo Javascript.

    Ho un problema con l'utilizzo di un array nel mio script, riporto di seguito la parte di codice:

    function applyQuestion(xobj){
    var y = new Array ("id", "pollid", "pageid", "q_published", "q_title", "q_type", "q_oblig",
    "q_multisize", "q_hide_results", "ordering");
    var z = new Array();

    for (var el in y){
    z[el] = encodeURIComponent(document.getElementById(y[el]).value);}

    var multi = document.getElementById("multiIds").value;
    x_applyElement(y, z, multi, dummy);
    }

    Il problema è che il ciclo FOR viene ripetuto 11 volte invece di 10 volte come dovrebbe essere dato che l'array Y da 10 valore. Inserendo una funzione ALERT per visualizzare il contenuto di Y ho notato che l'11 valore contenuto nell'array è una funzione del tipo:

    function (start, length) {
    start = start || 0;
    if (start < 0) {
    start = this.length + start;
    ............. ecc ecc

    Se invece di utilizzare for (var el in y) utilizzo for (el=0; el<=y.length-1; el++) invece il ciclo For è ripetuto correttamente 10 volte ma ho il problema che la funzione encodeURIComponent(document.getElementById(y[el]).value);}
    mi restituisce tutti valori UNDEFINED mentre se uso for (var el in y) ottengo i valori giusti.

    Qualcuno può darmi una mano a capire dove sbaglio è una settimana che provo a farlo funzionare senza risultato.

  2. #2
    non puoi fare un cilco for "semplice"???
    così

    for (el=0;el<y.length;el++){
    z[el] = encodeURIComponent(document.getElementById(y[el]).value);}

    var multi = document.getElementById("multiIds").value;
    x_applyElement(y, z, multi, dummy);
    }



    Prova e fammi sapere

  3. #3
    Forse nel mio primo post non mi sono spiegato bene.

    Ho gia provato a fare un "ciclo for semplice" ma a quel punto ho un altro problema: con il "mio" ciclo FOR ottengono l'errore dei 11 cicli invece di 10 ma l'array Z ha i valori corretti (almeno fino alla comparsa dell'errore) se utilizzo il tuo "ciclo semplice" ottengo 10 cicli ma i valori all'interno dell'array Z sono tutti UNDEFINED.

    E' assurdo non capisco proprio dove sbaglio.

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Questa la mia pagina di prova:
    codice:
    <HTML>
    <HEAD>
    <script>
    function applyQuestion(xobj){ 
    	var y = new Array ("id", "pollid", "pageid", "q_published", "q_title", "q_type", "q_oblig", "q_multisize", "q_hide_results", "ordering");
    	var z = new Array();
    	for (var el in y){
    		z[el] = encodeURIComponent(document.getElementById(y[el]).value);
    alert(z[el])
    	}
    
    //	var multi = document.getElementById("multiIds").value;
    //	x_applyElement(y, z, multi, dummy);
    }
    function applyQuestion_bis(xobj){ 
    	var y = new Array ("id", "pollid", "pageid", "q_published", "q_title", "q_type", "q_oblig", "q_multisize", "q_hide_results", "ordering");
    	var z = new Array();
    	for (var el=0;el<y.length;el++){
    		z[el] = encodeURIComponent(document.getElementById(y[el]).value);
    alert(z[el])
    	}
    
    //	var multi = document.getElementById("multiIds").value;
    //	x_applyElement(y, z, multi, dummy);
    }
    
    </script>
    </HEAD>
    <BODY>
    <input id="id" value=0>
    <input id="pollid" value=1>
    <input id="pageid" value=2>
    <input id="q_published" value=3>
    <input id="q_title" value=4>
    <input id="q_type" value=5>
    <input id="q_oblig" value=6>
    <input id="q_multisize" value=7>
    <input id="q_hide_results" value=8>
    <input id="ordering" value=9>
    <script>applyQuestion();applyQuestion_bis()</script>
    </BODY>
    </HTML>
    E non presenta problemi in nessuna delle due versioni.... sospetto che sia qualche altro oggetto nella tua pagina a dare fastidio.

    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

  5. #5
    Ad essere sincero l'idea mi era passata di mente ma poi pensavo fosse assurdo in virtu del caso che il vettore Y venisse definito all'interno della funzione.

    In ogni caso vedrò di cercare nella restante parte del codice e poi vi farò sapere.

    Per il momento grazie.

  6. #6
    gli array si ciclano con il for, gli oggetti con il for in poichè se cicli un array con un for in rischi di ritrovarti anche le prototype nel ciclo, se assegnate.

    var a = [1,2,3];
    for(var i = 0; i < a.length; i++){
    alert(a[i]);
    }

    stamperà sempre e comunque 1, poi 2 ed in fine 3 ... nessun undefined, nessuna prototype
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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 © 2025 vBulletin Solutions, Inc. All rights reserved.