Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19

    Onclick con funzione con parametri

    Salve a tutti... ho un problema che non riesco proprio a risolvere.
    Tramite il javascript creo un tag img e delle variabili "j" e "id". Queste variabili le voglio poi inserire dentro la funzione che assegno all'evento onclick sull'immagine ma ciò che accade è che quello che viene passato non è il contenuto della variabile ma bensì il loro nome (o qualcosa del genere).. Ho provato in tanti modi usando sia javascript che jquery ma non riesco proprio a risolvere. Questo è quello che mi sembra avvicinarsi di più alla soluzione ma restituisce l'errore che la funzione richiamata non riesce a modificare il campo value di NULL perché ovviamente non riesce a trovare nulla con id "j"...


    Il codice è il seguente, ovviamente non è completo, lo ridotto all'osso per evitare confusione...
    codice:
    Codice contenuto nel file PHP dentro il tag <script>
    
    
    ... 
    
    for(var i=0;i<numAss;i++)                     
    {
    
    ...  
    
    var box=document.createElement("input");
    box.type="textbox";
    box.value=matrice[d+i][10];
    box.id=i;
    
    ...
    
    }
    
    ...
    
    for(var j=0;j<6;j++)
    {
     var id=matrice[d][0];
     imgtastiera.onclick = function(j,id) {
    				inserisci(j,id);
    			     };
    }
    ...
    
    
    Codice contenuto nel file js incluso nell'head
    function inserisciVoto(j,id)
    {
    	var target=document.getElementById(j);
    	var exVal=parseInt(target.value);
    	target.value=exVal+1;  <--- Uncaught TypeError: Cannot read property 'value' of null
    ...
    }
    Io non so veramente come risolvere... le ho provate tutte...

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    591
    Quote Originariamente inviata da davide57 Visualizza il messaggio
    Salve a tutti... ho un problema che non riesco proprio a risolvere.
    Tramite il javascript creo un tag img e delle variabili "j" e "id". Queste variabili le voglio poi inserire dentro la funzione che assegno all'evento onclick sull'immagine ma ciò che accade è che quello che viene passato non è il contenuto della variabile ma bensì il loro nome (o qualcosa del genere).. Ho provato in tanti modi usando sia javascript che jquery ma non riesco proprio a risolvere. Questo è quello che mi sembra avvicinarsi di più alla soluzione ma restituisce l'errore che la funzione richiamata non riesce a modificare il campo value di NULL perché ovviamente non riesce a trovare nulla con id "j"...


    Il codice è il seguente, ovviamente non è completo, lo ridotto all'osso per evitare confusione...
    codice:
    Codice contenuto nel file PHP dentro il tag <script>
    
    
    ... 
    
    for(var i=0;i<numAss;i++)                     
    {
    
    ...  
    
    var box=document.createElement("input");
    box.type="textbox";
    box.value=matrice[d+i][10];
    box.id=i;
    
    ...
    
    }
    
    ...
    
    for(var j=0;j<6;j++)
    {
     var id=matrice[d][0];
     imgtastiera.onclick = function(j,id) {
                    inserisci(j,id);
                     };
    }
    ...
    
    
    Codice contenuto nel file js incluso nell'head
    function inserisciVoto(j,id)
    {
        var target=document.getElementById(j);
        var exVal=parseInt(target.value);
        target.value=exVal+1;  <--- Uncaught TypeError: Cannot read property 'value' of null
    ...
    }
    Io non so veramente come risolvere... le ho provate tutte...
    Ma il nome della funzione è corretto? non è che chiami una funzione diversa? tipo inserisci(...
    Vic53

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Si è corretto... Nel codice postato avevo tolto qualcosa per renderlo più leggibile ma ho dimenticato un pezzo...

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Secondo me un id deve per forza cominciare da una lettera. Da quello che vedo i tuoi id sono numeri.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Era quello l'errore! Grazie mille!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Come non detto... continua a non passarli e dà lo stesso errore...
    Ho provato a fare un:
    alert(j);
    alert(id);

    dentro la funzione inserisciVoto e risulta Object Mouse Event e undefined o.o
    Ultima modifica di davide57; 04-12-2016 a 01:28

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Pensavi che ci fosse solo un problema ? In inserisciVoto di che tipo è l'oggetto che corrisponde a target ?
    Poi se adesso l'id non è più numerico il parseInt non deve più funzionare.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    L'oggetto che corrisponde a target è un input (textbox) che creo sempre tramite javascript e gli assegno l'id con:

    votobox.id="v"+i;

    comunque usando:

    codice:
    imgtastiera.addEventListener('click', function(){
     inserisciVoto(j,idsond);
    });
    adesso gli arrivano i giusti parametri ma continua a dire:
    Uncaught TypeError: Cannot read property 'value' of null
    at inserisciVoto (main.js:46)
    at HTMLImageElement.<anonymous> (main.php?p=bacheca:225)

    Il parseint non credo c'entri qualcosa visto che il target è un textbox e io vado a considerare il value che è un numero...


    AGGIORNAMENTO:

    indagando ancora più a fondo ho notato che ogni volta gli passa come valore di "j" il numero 6... quindi il problema sta qui ma non capisco come sia possibile che gli passi 6 se nel ciclo la j scorre da 0 a 5 e io glielo passo nel ciclo... ho provato anche a cambiare nome a j ma niente... passa sempre 6!

    codice:
                for(var j=0;j<6;j++)
            {    
                var imgtastiera=document.createElement("img");
                imgtastiera.id="idimgtastiera"+j;
                var idsond=matrice[d][0];
                imgtastiera.addEventListener('click', function(){
                                         inserisciVoto(j,idsond);
                                        });
                
                tastierabox.appendChild(imgtastiera);
            }
    Se risolviamo sto fatto che passa "6" come j allora è tutto apposto visto che funziona tutto il resto e funziona passandoci i valori a mano.

    AGGIORNAMENTO 2:

    Ho capito il perché. Il valore della variabile j viene interrogato solo nel momento in cui la funzione viene richiamata e cioè quando ci si clicca sopra e quindi dopo che il ciclo è concluso e la variabile ha raggiunto lo stato in cui viola la condizione, ovvero 6.... ora il problema è... come risolvere?!
    Ultima modifica di davide57; 04-12-2016 a 02:14

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il problema non sta nel ciclo for che si limita a definire gli eventi non a eseguirli.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    19
    Il problema è che il valore della variabile "j" che viene nominata in:
    codice:
    function(){
        inserisciVoto(j,idsond);
    };
    viene "richiesto" nel momento in cui avviene l'onclick... quindi quello che succede è:

    - Inizializza la variabile j=0;
    - Fa il ciclo incrementando j fino a 6 e per ogni iterazione mette la funzione con parametri J e idsond ma non passandogli il valore ma la vera e propria variabile;
    - Quando si clicca e si richiama la funzione viene richiesto il valore attuale di j che è 6 e quindi passa sempre 6 alla funzione.

    Come si può risolvere una cosa del genere?


    AGGIORNAMENTO:

    HO RISOLTO! Gli ho passato "this" alla funzione anziché "j" e ho messo il valore di j nel name di ogni elemento insieme a un pezzo di stringa. Poi l'ho splittato, trasformato in intero e ottenuto così il tanto bramato j!
    Grazie comunque della disponibilità
    Ultima modifica di davide57; 04-12-2016 a 02:34

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.