[Javascript] Rercupero etichetta

Discussione in 'Javascript' iniziata da zorro, 24 Aprile 2018.

  1. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    210
    Mi Piace Ricevuti:
    10
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    Salve a tutti,
    non essendo molto ferrrato in javascript vorrei un parere da chi ne sa di piu.
    Ho tre pulsanti sullo schermo contrassegnati da 1, 2 e 3. Se io definisco i pulsanti come div (#div1, #div2 e #div3, quindi con tre definizioni distinte), posso recuperare l'etichetta del div cliccato con ad es.
    div.innerHTML
    ma se definisco i tre div come una classe (.div, anche perchè i tre pulsanti sono identici, cambia solo l'etichetta) div.innerHTML non funziona più; ho provato anche a sostituire div con this ma senza esito.
    Secondo voi è fattibile una cosa del genere o devo definire un div per ogni pulsante?
    Grazie a chiunque vorrà aiutarmi.


    Zorro
     
  2. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    210
    Mi Piace Ricevuti:
    10
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    PS Inserisco il codice (per comodità ho usato un solo pulsante):

    Codice:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
    #pippo {
        width:40px;
        height:40px;
        border:solid 2px  green;
    }
    </style>
    </head>
    <div id="pippo" onclick="maxi()">
          89
    </div>
    <body>
    
    <script>
    function maxi() {
        var tasto =  pippo.innerHTML;
        alert(tasto);
    }
    </script>
    
    </body>
    </html>
    

    ma se sostituisco:


    Codice:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
    .pippo {
        width:40px;
        height:40px;
        border:solid 2px  green;
    }
    </style>
    </head>
    <div class="pippo" onclick="maxi()">
          89
    </div>
    <body>
    
    <script>
    function maxi() {
        var tasto =  pippo.innerHTML;
        alert(tasto);
    }
    </script>
    
    </body>
    </html>
    
    non funziona più
     
  3. WmbertSea

    WmbertSea Utente Attivo

    Registrato:
    28 Novembre 2014
    Messaggi:
    146
    Mi Piace Ricevuti:
    20
    Punteggio:
    28
    Ciao, si può fare in vari modi. L'uso di this in questo caso può essere utile per risolvere. Una soluzione può essere quella di passare proprio this come argomento della funzione.

    Certamente è fattibile. Direi piuttosto che si tratta di nozioni base di JavaScript (o in generale della programmazione orientata agli oggetti), per cui se il tuo interesse è mirato all'apprendimento di tale linguaggio, ti consiglierei eventualmente di valutare lo studio di qualche guida di base così da fare tuoi certi concetti.

    Qui il tuo esempio rielaborato:
    Codice:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Test</title>
    <style>
    .pippo {
        width:40px;
        height:40px;
        border:solid 2px  green;
    }
    </style>
    </head>
    <body>
    <div class="pippo" onclick="maxi(this)">
          89
    </div>
    <div class="pippo" onclick="maxi(this)">
          Altro DIV
    </div>
    
    <script>
    function maxi(questo) {
        var tasto =  questo.innerHTML;
        alert(tasto);
    }
    </script>
    
    </body>
    </html>
    Nota che ho definito il parametro "questo" (come argomento della funzione). Sostanzialmente è una variabile locale di tale funzione, la quale fa riferimento al this che ho passato nelle chiamate della stessa funzione. La parola chiave this non è altro che un riferimento all'elemento specifico in base al contesto in cui è adoperata. In questo caso farà riferimento ad ogni specifico div da cui viene richiamata quella funzione.

    Buon proseguimento.


    PS: occhio, sul tuo codice HTML ci sono degli errori strutturali come quel <div> che hai inserito prima dell'apertura del <body>. Consiglio sempre, soprattutto nella fase di sviluppo, di passare il codice in un validatore (vedi qui) per assicurarsi di lavorare sempre con un codice valido, così da evitare eventuali risultati inattesi per possibili errori di validazione.
     
  4. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    210
    Mi Piace Ricevuti:
    10
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    Ciao WmbertSea,
    ti ringrazio della risposta e dei consigli. In effetti ho una guida, ma non è molto chiara. Ho provato anche ad utilizzare jQuery, col quale ho più dimestichezza, ma anche in quel caso ho trovato dei problemi, anche se di altra natura.
    Per quanto riguarda il <body> hai ragione: me ne sono accorto solo dopo aver postato il codice.
    Tornando quindi al problema principale dovrei passare this come argomento della funzione. Grazie ancora dell'aiuto.


    Zorro
     
  5. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    210
    Mi Piace Ricevuti:
    10
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    GRANDEEEE!!!! Funziona alla grande!!
    Mi perdo sempre in un bicchier d'acqua: se non passo alla funzione this come parametro, come faccio a leggere l'etichetta (di chi?). Grazie ancora della dritta


    Zorro
     
Sto caricando...

Condividi questa Pagina