請閱讀並嘗試下面的代碼。點擊「foo」段落。看着瀏覽器控制檯,我看不到預期的結果,而如果我點擊「欄」,我就可以。Javascript「this」through different scope
這是爲什麼發生?
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<div class="root">
<div>
<p id="foo">foo</p>
</div>
<p id="bar">bar</p>
</div>
<script type="text/javascript">
var p_list = document.getElementsByTagName('P');
for (var n=0; n<p_list.length; n++) {
p_list[n].onclick = function() {
console.log('ONCLICK - id: ' + this.id + ' - ' + getC(this) + '\n');
};
}
function getC(P) {
if (P.parentNode.className === 'root') {
console.log('INSIDE FUNCTION - id: ' + P.id + ' - ' + P.parentNode);
return P.parentNode;
} else {
getC(P.parentNode);
}
}
</script>
</body>
</html>
直播代碼:http://jsbin.com/izuleg/1/edit
請問一個問題,不要只說你不希望的結果。 – 2013-03-26 14:42:03
創建一個jsfiddle – robasta 2013-03-26 14:42:56
歡迎來到[SO];如果您還沒有,請查看[faq]。對於這些問題,通常在jsfiddle(http://jsfiddle.net)上創建[簡化測試用例]並描述您的預期結果是很有幫助的。 – zzzzBov 2013-03-26 14:43:17