请阅读并尝试下面的代码。点击“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