Javascript Capire da dove viene il click ? Javascript

Stato
Discussione chiusa ad ulteriori risposte.

paolo_99

Utente Bronze
27 Aprile 2016
25
12
0
38
Ciao a tutti.
La mia idea è:
ho una funzione(nel JS) che viene richiamata più volte da diversi bottone nel HTML ora se io volessi fare in modo che la funzione faccio una certa cosa se viene richiamata da un bottone piuttosto che da un altro si può fare?La cosa sarebbe perfetta se si potesse capire tramite l'ID dell'oggetto.
Faccio l'esempio di un codice:
HTML
<form>
<input type="button" di="ciao" value="bottone1" onclick="saluto()"/>
<input type="button" di="hello" value="bottone2" onclick="saluto()"/>
</form>
JS
function saluto(){
if(se arriva dal bottone uno ){//mi serve cosa mettere come condizione nell'if
alert("ciao");
}
else if(se arriva dal bottone due ){//mi serve cosa mettere come condizione nell'if
alert("hello");
}
 
La soluzione migliore sarebbe collegare funzioni diverse in base al bottone, Esempio :

HTML
<form>
<input type="button" value="bottone1" onclick="saluto()"/>
<input type="button" value="bottone2" onclick="hello()"/>
</form>

JS
function saluto(){
alert("ciao");
}

function hello(){
alert("hello");
}
 
La soluzione migliore sarebbe collegare funzioni diverse in base al bottone, Esempio :

HTML
<form>
<input type="button" value="bottone1" onclick="saluto()"/>
<input type="button" value="bottone2" onclick="hello()"/>
</form>

JS
function saluto(){
alert("ciao");
}

function hello(){
alert("hello");
}
SI MA A ME SERVE QUELLO CHE HO CHIESTO NELLA DOMANDA!! Stessa funzione per tutti e due i bottoni
 
Allora intanto calmati perchè qua nessuno ci paga per rispondere ai vostri problemi...
e comunque

se io volessi fare in modo che la funzione faccio una certa cosa se viene richiamata da un bottone piuttosto che da un altro

In questa riga c'è la tua domanda e la mia risposta è corretta. se volevi altro ti sei espresso male.
 
Allora intanto calmati perchè qua nessuno ci paga per rispondere ai vostri problemi...
e comunque



In questa riga c'è la tua domanda e la mia risposta è corretta. se volevi altro ti sei espresso male.
OK va bene grazie per il tuo tempo. Speriamo che qualcun altro risponda alla mia domanda.
 
Guarda attraverso Id non saprei dirti sul momento ma puoi utilizzare due funzioni in un onclick in cui la prima esegue quella comune a tutti e la seconda è quella del singolo elemento...
CODICE :

<body>
<input type="button" id="ciao" onclick="comune(), ciao()"/>
<input type="button" id="hello" onclick="comune(), hello()"/>
</body>


<script language="javascript">
function comune(){
alert("scriptcomuni");
}

function ciao(){
alert("ciao");
}

function hello(){
alert("hello");
}
</script>
 
Allora, é necessario aggiungere un parametro alla funzione:

HTML
<form>
<input type="button" id="ciao" value="bottone1" onclick="saluto('ciao')"/>
<input type="button" id="hello" value="bottone2" onclick="saluto('hello')"/>
</form>

JS
function saluto(ID){
if(ID == ciao)
alert("ciao");
else
alert("hello");
}

Inviata da ASUS_X00AD tramite app ufficiale di Inforge.net
 
Non sarebbe meglio passare l'oggetto stesso?
Codice:
<input type="button" id="hello" value="bottone2" onclick="saluto(this)"/>

E poi dalla funzione del js scrivi qualcosa del genere
Codice:
function saluto( oggetto ){
    buttonValue = oggetto.value;
    alert('E' stato premuto il bottone: " + button );
}
 
  • Mi piace
Reazioni: TheSeeker
Ultima modifica:
Allora ti piace di più così?
Codice:
<input type="button" id="hello" value="bottone2" onclick="saluto(this.value)"/>

E poi dalla funzione del js scrivi qualcosa del genere
Codice:
function saluto( valueOggetto ){
    alert('E' stato premuto il bottone: " + valueOggetto );
}
Bastava un po' di refactoring, il mio era solo uno spunto.
Non c'è da preoccuparsi sull'invio di dati inutili, stiamo parlando di un'oggetto pressoché insignificante sia come quantità di informazioni che come qualità

Puoi anche aggiungere una proprietà tua all'oggetto del DOM in modo tale che prenda altre cose anche, tipo
Codice:
<input type="button" id="hello" lang="en" value="bottone2" onclick="saluto(this.value, this.lang)"/>

E poi dalla funzione del js scrivi qualcosa del genere
Codice:
function saluto( valueOggetto, langOggetto ){
    alert('E' stato premuto il bottone: " + valueOggetto + "\n Lingua scelta: " + langOggetto );
}

Ti puoi sbizarrire davvero come vuoi, la variante di quest'ultimo codice è passare tutto l'oggetto e poi prendere i due valori nel javascript.
 
  • Mi piace
Reazioni: TheSeeker
Ultima modifica:
Allora ti piace di più così?
Codice:
<input type="button" id="hello" value="bottone2" onclick="saluto(this.value)"/>

E poi dalla funzione del js scrivi qualcosa del genere
Codice:
function saluto( valueOggetto ){
    alert('E' stato premuto il bottone: " + valueOggetto );
}

Si, così é perfetto secondo me!
Comunque non volevo screditarti, purtroppo (o per fortuna, dipende dal punto di vista) cerco sempre di ottimizzare i miei codici, per dunque passo ore su piccole cose di questo calibro... Tranne per i lavori di scuola, quelli basta che facciano ciò che viene richiesto!
 
1. Puoi passare un parametro formale nella funzione per poi fare un controllo; ( poco professionale )

2. Puoi passare sempre nella funzione l'id del bottone in questa maniera , se non ricordo male: saluto(this.id)

Le alternative proposte dagli altri sono comunque buone.
Se usi la libreria JQuery è ancora meglio perché è più performante e potente
 
Se usi la libreria JQuery è ancora meglio perché è più performante e potente
Senza dubbio, però per fare queste cose è più che inutile.
La cosa più rapida e che occupa meno memoria e calcolo è passare direttamente il campo interessato, niente jquery e niente altre cose.
 
Non sottovalutiamo l'importanza della proprietà data-quellochevuoi, ultimamente la sto utilizzando e devo ammetere sia comoda.

Esempio:
HTML:
<input type="button" class="bottone" data-action="uno" />
<input type="button" class="bottone" data-action="due" />

JavaScript:
var buttons = document.getElementsByClassName('bottone');

for(var i = 0;i < buttons.length;i++){
  buttons[i].addEventListener('click', function(e){
    switch(this.getAttribute('data-action')){
      case 'uno':
        alert('uno');
        break;
      case 'due':
        alert('due');
        break;
    }
  }, false);
}
 
  • Mi piace
Reazioni: killaemo
Stato
Discussione chiusa ad ulteriori risposte.