[Javascript] Rercupero etichetta

zorro

Utente Attivo
20 Ott 2014
218
10
18
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
 

zorro

Utente Attivo
20 Ott 2014
218
10
18
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ù
 

WmbertSea

Utente Attivo
28 Nov 2014
149
20
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.

Secondo voi è fattibile una cosa del genere o devo definire un div per ogni pulsante?
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.
 

zorro

Utente Attivo
20 Ott 2014
218
10
18
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
 

zorro

Utente Attivo
20 Ott 2014
218
10
18
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