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.