2017-01-19 55 views
0

在這段代碼中,「this」關鍵字在函數調用參數中的div元素中使用,所以我的問題是「this」關鍵字用於對象或像窗口這樣的全局對象,所以爲什麼在這裏我們使用「this」這個關鍵詞是什麼在這裏使用這個的目的,好心解釋一下。「This」關鍵字在元素中的使用

<!DOCTYPE HTML> 
 
<html> 
 
<body> 
 
<link type="text/css" rel="stylesheet" href="example.css"> 
 

 
<div class="d1" onclick="highlight(this)">1 
 
    <div class="d2" onclick="highlight(this)">2 
 
     <div class="d3" onclick="highlight(this)">3 
 
     </div> 
 
    </div> 
 
</div> 
 

 
<script> 
 
function highlight(elem) { 
 
    elem.style.backgroundColor='yellow' 
 
    alert(elem.className) 
 
    elem.style.backgroundColor = '' 
 
} 
 
</script> 
 

 
</body> 
 
</html>

+1

因此,您可以獲得有關點擊的參考嗎? – epascarello

+2

可能是重複的:http://stackoverflow.com/questions/925734/whats-this-in-javascript-onclick – Georgy

+0

我會建議閱讀[MDN文章關於此關鍵字](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) –

回答

0

在您的代碼段中,this目的如果如下:thisreference當前對象(DOM元素),你的情況this指div的clicked

在您的例子,它應用於backgroundColor所有的事件,因爲進來玩event bubblingcapturing。爲了阻止這種使用stopPropagation方法,並傳遞event工作。

這裏是溶液:

function highlight(elem,event) { 
 
    event.stopPropagation(); 
 
    elem.style.backgroundColor='red'; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="d1" onclick="highlight(this,event)">1 
 
    <div class="d2" onclick="highlight(this,event)">2 
 
     <div class="d3" onclick="highlight(this,event)">3 
 
     </div> 
 
    </div> 
 
</div>

0

這裏this指元素,因爲它是一個對象。

當您在一個對象的範圍(構造函數的原型內部或)的時候,那麼this認爲你正在改變

元素都在裏面javascript對象實例。他們有一個onclick屬性,你可以改變你喜歡的任何功能。上面的代碼可以轉換爲以下幾點:

element.onclick = function() { 
    highlight(this); 
}; 

您可以在高亮功能明顯增加的元素,像這樣:

HTMLDivElement.prototype.highlight = function() { 
    // Stuff 
}; 

然後你就可以把this.highlight()在onclick,但止跌」太乾淨了。

注意:如果你不在一個對象的範圍內,那麼這是指窗口對象。這是因爲你放在全局範圍內的內容將在該對象內部可用。這就是爲什麼你可以通過簡單地打電話給他們,或在他們之前放置window.

0

onclick中的'this'關鍵字只是對onclick所在的DOM元素的引用。
例如,類「d1」的第一個div中的「this」是對該div-div與類「d1」的引用。在類'd2'的第二個div中,'this'是對該類div'd2'的引用,等等......