两个js节点的困惑
两个js节点的疑惑
刚学习javascript,看视频遇到一个想了一晚上也没想明白的疑点,希望大家指点。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>小程序</title>
<script>
window.onload = function(){
var liNodes = document.getElementsByTagName("li");
for(var i=0; i<liNodes.length; i++){
liNodes[i].onclick = function(){
alert(inNodes[i].firstChild.nodeValue); // 为什么这里报未定义?
alert(i); // 这里输出的结果为什么是8? 为什么不是1,2,3,4 等值?
}
}
}
</script>
</head>
<body>
<p>你喜欢哪个城市?</p>
<ul id="city">
<li id="bj" name="BeiJing">北京</li>
<li>上海</li>
<li>东京</li>
<li>首尔</li>
</ul>
<br><br>
<p>你喜欢哪款单机游戏?</p>
<ul id="game">
<li id="rl">红警</li>
<li>实况</li>
<li>*飞车</li>
<li>魔兽</li>
</ul>
</body>
</html>
------解决方案--------------------
------解决方案--------------------
for(var i=0; i<liNodes.length; i++){
运行完后 i大于 length 所以没有 i指向的元素
刚学习javascript,看视频遇到一个想了一晚上也没想明白的疑点,希望大家指点。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>小程序</title>
<script>
window.onload = function(){
var liNodes = document.getElementsByTagName("li");
for(var i=0; i<liNodes.length; i++){
liNodes[i].onclick = function(){
alert(inNodes[i].firstChild.nodeValue); // 为什么这里报未定义?
alert(i); // 这里输出的结果为什么是8? 为什么不是1,2,3,4 等值?
}
}
}
</script>
</head>
<body>
<p>你喜欢哪个城市?</p>
<ul id="city">
<li id="bj" name="BeiJing">北京</li>
<li>上海</li>
<li>东京</li>
<li>首尔</li>
</ul>
<br><br>
<p>你喜欢哪款单机游戏?</p>
<ul id="game">
<li id="rl">红警</li>
<li>实况</li>
<li>*飞车</li>
<li>魔兽</li>
</ul>
</body>
</html>
------解决方案--------------------
window.onload = function(){
var liNodes = document.getElementsByTagName("li");
for(var i=0; i<liNodes.length; i++){
(function(i) {
liNodes[i].onclick = function(){
alert(this.innerHTML + i);
}
})(i);
}
}
------解决方案--------------------
for(var i=0; i<liNodes.length; i++){
运行完后 i大于 length 所以没有 i指向的元素