Che cos'è "questo" in JavaScript onclick?


115
<a onclick="javascript:func(this)" >here</a>

Cosa thissignifica nello script?


4
@ JMCF125 È riuscito comunque a essere utile. Ho cercato su Google come ottenere l'elemento su cui è stato fatto clic in un evento onclick e sono finito qui, dove ho trovato la risposta.
Conto buttato via

cosa fa javascript: fa? perché non è così <a onclick="func(this)" >here</a>
J3STER

1
@ J3STER Il prefisso "javascript:" non è corretto in onclick. Puoi trovare la spiegazione nella risposta di Tim Down di seguito .
Mariano Desanze

Risposte:



34

Si riferisce all'elemento nel DOM a cui onclickappartiene l' attributo:

<script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
</script>
<script type="text/javascript">
function func(e) {
  $(e).text('there');
}
</script>
<a onclick="func(this)">here</a>

(Questo esempio utilizza jQuery .)


22

Il valore degli attributi del gestore di eventi come onclick dovrebbe essere solo JavaScript, senza alcun prefisso "javascript:". Lo pseudo-protocollo javascript: viene utilizzato in un URL, ad esempio:

<a href="javascript:func(this)">here</a>

onclick="func(this)"Tuttavia, dovresti usare il modulo in preferenza. Si noti inoltre che nel mio esempio precedente utilizzando il javascript: pseudo-protocollo "questo" si riferirà all'oggetto finestra piuttosto che <a>all'elemento.


1
Voto negativo interessante, anche se suppongo che a rigor di termini questa risposta offra solo consigli sulla domanda piuttosto che rispondere direttamente alla domanda.
Tim Down

Sì ... non hai davvero risposto alla domanda: - / niente di personale!
Dave

1
@ Dave: abbastanza giusto. Nel momento in cui ho scritto questo, la domanda principale era già stata risolta. La mia risposta avrebbe probabilmente dovuto essere un commento, ma sospetto di non aver avuto abbastanza rappresentante per aggiungere un commento in quel momento. Vivere e imparare.
Tim Down

8
Non abbastanza rep in quel momento? sputa il suo vino
Jonathan

5

In JavaScript this riferisce all'elemento contenente l'azione. Ad esempio, se hai una funzione chiamata hide():

function hide(element){
   element.style.display = 'none';
}

Chiamando hideconthis nasconderà l'elemento. Restituisce solo l'elemento su cui è stato fatto clic, anche se è simile ad altri elementi nel DOM.

Ad esempio, se fai thisclic su un numero nell'HTML di seguito , potresti nascondere solo il punto elenco cliccato.

<ul>
  <li class="bullet" onclick="hide(this);">1</li>
  <li class="bullet" onclick="hide(this);">2</li>
  <li class="bullet" onclick="hide(this);">3</li>
  <li class="bullet" onclick="hide(this);">4</li>
</ul>

4

Qui (questo) è un oggetto che contiene tutte le caratteristiche / proprietà dell'elemento dom. puoi vedere da

console.log(this);

Verranno visualizzate tutte le proprietà degli attributi dell'elemento dom con la gerarchia. Puoi manipolare l'elemento dom in questo modo.

Descrivi anche sul link sottostante: -

http://www.quirksmode.org/js/this.html


3

parola chiave presente in addEventListener evento

function getValue(o) {
  alert(o.innerHTML);
}

function hide(current) {
  current.setAttribute("style", "display: none");
}

var bullet = document.querySelectorAll(".bullet");

for (var x in bullet) { 
  bullet[x].onclick = function() {
    hide(this);
  };
};
 
/* Using dynamic DOM Event */
document.querySelector("#li").addEventListener("click", function() {
  getValue(this); /* this = document.querySelector("#li") Object */
});
li {
  cursor: pointer;
}
<ul>
  <li onclick="getValue(this);">A</li>
  <li id="li" >B</li>
  <hr />
  <li class="bullet" >1</li>
  <li class="bullet" >2</li>
  <li class="bullet" >3</li>
  <li class="bullet" >4</li>
</ul>


2

Quando si chiama una funzione, la parola "questo" è un riferimento all'oggetto che ha chiamato la funzione.

Nel tuo esempio, è un riferimento all'elemento di ancoraggio. All'altra estremità, la chiamata alla funzione accede quindi alle variabili membro dell'elemento tramite il parametro passato.


1

thissi riferisce all'oggetto a cui onclickappartiene il metodo. Quindi all'interno func thissarebbe il nodo DOM adell'elemento e this.innerTextsarebbe here.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.