2009-05-29 101 views
86
<a onclick="javascript:func(this)" >here</a> 

this在腳本中的含義是什麼?JavaScript onclick中的「this」是什麼?

+4

@ JMCF125他設法是有用的呢。我搜索瞭如何獲取onclick事件中點擊的元素,並在這裏結束了,我找到了答案。 – 2016-03-31 19:49:16

+0

javascript:做什麼?爲什麼不是這樣的 `here` – J3STER 2017-07-11 23:33:32

+1

@ J3STER onclick中的「javascript:」前綴不正確。您可以在[Tim Down的答案]下找到解釋(https://stackoverflow.com/a/926170/146513)。 – 2017-11-10 23:13:07

回答

80

如果您在詢問有關情況,this代表HTML DOM元素。

所以它會是被點擊的<a>元素。

2

this參照onclick方法所屬的對象。因此functhis內部將是a元素的DOM節點,並且this.innerText將是here

26

它指的是到該onclick屬性所屬的DOM的元件:(此示例使用jQuery

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

2

調用函數時,單詞「這個」是參考到調用該函數的對象。

在您的示例中,它是對anchor元素的引用。在另一端,函數調用然後通過傳遞的參數訪問元素的成員變量。

17

事件處理程序屬性(如onclick)的值應該只是JavaScript,沒有任何「javascript:」前綴。 JavaScript的:僞協議是在URL中使用,例如:

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

你應該儘管使用onclick="func(this)"形式優先於這一點。另請注意,在我上面使用javascript:pseudo-protocol「this」的示例中,將引用窗口對象而不是<a>元素。

5

在JavaScript中this引用包含該操作的元素。舉例來說,如果你有一個函數調用hide()

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

調用hidethis將隱藏的元素。它僅返回單擊的元素,即使它與DOM中的其他元素相似。

例如,您可能有this在下面的HTML中單擊一個數字將只隱藏點擊的項目符號點。

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

這裏(this)是一個包含dom元素的所有特徵/屬性的對象。 你可以看到

console.log(this); 

這將顯示所有的屬性與層次的DOM元素的屬性。 你可以通過這個操縱dom元素。

下面的鏈接還描述: -

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

1

關鍵字的addEventListener事件

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>

相關問題