请阅读并尝试下面的代码。点击“foo”段落。查看浏览器控制台,我没有看到预期的结果,而如果我点击“栏”,我会看到。
为什么会这样?
<!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