JavaScript onclick'te "bu" nedir?


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

thisSenaryoda ne anlama geliyor?


4
@ JMCF125 Yine de faydalı olmayı başardı. Bir onclick etkinliğinde tıklanan öğeyi nasıl elde edeceğimi öğrenmek için Google'da araştırdım ve cevabı bulduğum yere geldim.
Hesap atmak

javascript ne yapar? neden böyle değil <a onclick="func(this)" >here</a>
J3STER

1
@ J3STER "javascript:" öneki onclick'te yanlış. Açıklamayı aşağıdaki Tim Down'ın cevabında bulabilirsiniz .
Mariano Desanze

Yanıtlar:



34

Özelliğin ait olduğu DOM'daki öğeyi ifade eder onclick:

<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>

(Bu örnekte jQuery kullanılmaktadır .)


22

Onclick gibi olay işleyici özelliklerinin değeri, herhangi bir "javascript:" öneki olmadan yalnızca JavaScript olmalıdır. Javascript: sözde protokol bir URL'de kullanılır, örneğin:

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

onclick="func(this)"Yine de bunun yerine formu tercih etmelisiniz . Ayrıca yukarıdaki javascript: sözde protokolü kullandığım örnekte "this" <a>öğesinin öğe yerine pencere nesnesine atıfta bulunacağını unutmayın .


1
İlginç bir olumsuz oylama, her ne kadar katı bir şekilde konuştuğunu düşünmeme rağmen, bu yanıt soruyu doğrudan yanıtlamaktan ziyade yalnızca soru etrafında tavsiyeler sunar.
Tim Down

Evet ... soruyu gerçekten cevaplamadınız: - / kişisel değil!
Dave

1
@Dave: Yeterince adil. Bunu yazdığımda ana soru çoktan cevaplanmıştı. Cevabım muhtemelen bir yorum olmalıydı, ancak o sırada bir yorum eklemek için yeterli temsilcim olmadığından şüpheleniyorum. Yaşa ve öğren.
Tim Down

8
Şu anda yeterince temsilci yok mu? şarabını tükürüyor
Jonathan

5

JavaScript'te thiseylemi içeren öğeyi ifade eder. Örneğin, adında bir işleviniz varsa hide():

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

Çağrı hideile thiseleman gizler. DOM'daki diğer öğelere benzer olsa bile yalnızca tıklanan öğeyi döndürür.

Örneğin, thisaşağıdaki HTML'de bir sayıya tıklamak yalnızca tıklanan madde işaretini gizleyecektir.

<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

Burada (bu), dom elemanının tüm özelliklerini / özelliklerini içeren bir nesnedir. Görebilirsin

console.log(this);

Bu, hiyerarşiyle birlikte dom öğesinin tüm öznitelik özelliklerini görüntüler. Dom öğesini bununla değiştirebilirsiniz.

Ayrıca aşağıdaki bağlantıda açıklayın: -

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


3

anahtar kelime bu yer addEventListener olay

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

Bir işlevi çağırırken, "bu" sözcüğü işlevi çağıran nesneye bir referanstır.

Örneğinizde, bağlantı elemanına bir referanstır. Diğer uçta, işlev çağrısı daha sonra iletilen parametre aracılığıyla öğenin üye değişkenlerine erişir.


1

thisonclickyöntemin ait olduğu nesneyi ifade eder . Yani içinde elementin func thisDOM düğümü olur ave this.innerTextolur here.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.