Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Assegnare ciclo di funzioni con i DOM

    Ciao a tutti

    partiamo subito con la parte di script che mi interessa sottoporvi:

    codice:
    for(var t=1;t<=3;t++){
    .....
    var nuovosel=document.createElement("select");
      nuovosel.onclick=function(){invia_dati("prova"+t);}
    ....
    }
    Il problema è che la variabile t inserita come parte dell'argomento della funzione non mantiene il valore ciclato.
    Ogni funzione assegnata a ogni select passa in tutti i casi il valore "prova3".

    consigli?

    grazie






  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    non stai applicando le closure correttamente

    http://stacktrace.it/articoli/2007/1...ript-closures/

    guarda attentamente gli esempi finali 2 e 3
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Originariamente inviato da fcaldera
    non stai applicando le closure correttamente

    http://stacktrace.it/articoli/2007/1...ript-closures/

    guarda attentamente gli esempi finali 2 e 3
    Mi puoi spiegare meglio dove sbaglio? Non è molto chiaro...

    grazie

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    a parte che non ho capito come fai ad assegnare l'evento onclick su un elemento se prima non lo appendi da qualche parte con un appendchild, ad ogni modo

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>xhtml 1.0</title>
    
            <script type="text/javascript">
            // <![CDATA[
            function test() {
                for(var t=1;t<=3;t++){
                   var nuovosel=document.createElement("select");
                   document.body.appendChild(nuovosel);
                   nuovosel.onclick=(function(index) {
                       return function() {
                          //alert("prova"+index);
                          invia_dati("prova"+index);
                       }
                   })(t);
                }
            }
            
            window.onload = test;
            // ]]>
            </script>
        </head>
    <body>
    
    
    </body>
    </html>

    e riguarda attentamente gli esempi che ti ho indicato nel link precedente
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Originariamente inviato da fcaldera
    a parte che non ho capito come fai ad assegnare l'evento onclick su un elemento se prima non lo appendi da qualche parte con un appendchild, ad ogni modo
    Come ho scritto sopra, ho pubblicato soltanto le due righe che mi interessava sottoporre al forum. Bastava leggere. Infatti ho messo la sequenza di puntini sia sopra che sotto.
    L'intero script è molto più complesso ed è lungo 120 righe quindi trovavo inutile copiarlo tutto nel thread visto che il problema riguarda una variabile.

    grazie per il suggerimento

  6. #6
    Ok funziona.
    Grazie


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.