两个js节点的疑惑 javascriptjs节点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <!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++){ (function(x){liNodes[x].onclick = function(){alert(liNodes[x].firstChild.nodeValue); // 为什么这里报未定义?alert(x); // 这里输出的结果为什么是8? 为什么不是1,2,3,4 等值?}})(i)}}</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> 1.闭包问题2.liNodes不是inNodes 不明白什么是闭包,刚接触javascript,能请朋友给我解释下么? 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++){liNodes[i].onclick = function(){alert(inNodes[i].firstChild.nodeValue); // 为什么这里报未定义?alert(i); // 这里输出的结果为什么是8? 为什么不是1,2,3,4 等值? //因为执行这个的时候 i 是8 }}整个运行 上下文的i 在for循环中不断变化 你alert(i) 调用的是i 这个i 变量在实际访问的时候才 去获取了i的值怎么破 看楼上 朋友能告诉我为什么 alert(inNodes[i].firstChild.nodeValue); // 为什么这里报未定义? 报未定义? 上面就是闭包的。 nNodes[i]. 你看看里面是什么调试看看。 朋友能告诉我为什么 alert(inNodes[i].firstChild.nodeValue); // 为什么这里报未定义? 报未定义?for(var i=0; i<liNodes.length; i++){运行完后 i大于 length 所以没有 i指向的元素 javascript小问题-改变字母显示方式 js 通过 WORD.APPLICATION,获取关闭后事件,高分求教 在Js里获取单击按钮的ID 初涉EXTJS--- 关于renderto一个问题 求助 请问怎么通过javascript清空ie缓存 这玩意儿怎么做? 什么时候初始化下拉框 网页效果,急!!!求求各位,进来看看吧!! 关于窗口之间的调用刷新(急!!!!!!!!!!!) IE对于jquery选择器的兼容问题 JS赋值给input后,怎么在后台后去input里面的值了?
<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++){
(function(x){
liNodes[x].onclick = function(){
alert(liNodes[x].firstChild.nodeValue); // 为什么这里报未定义?
alert(x); // 这里输出的结果为什么是8? 为什么不是1,2,3,4 等值?
}})(i)
}
}
</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> 1.闭包问题
2.liNodes不是inNodes
不明白什么是闭包,刚接触javascript,能请朋友给我解释下么?
var liNodes = document.getElementsByTagName("li");
for(var i=0; i<liNodes.length; i++){
(function(i) {
liNodes[i].onclick = function(){
alert(this.innerHTML + i);
}
})(i);
}
}
liNodes[i].onclick = function(){
alert(inNodes[i].firstChild.nodeValue); // 为什么这里报未定义?
alert(i); // 这里输出的结果为什么是8? 为什么不是1,2,3,4 等值? //因为执行这个的时候 i 是8
}
}整个运行 上下文的i 在for循环中不断变化 你alert(i) 调用的是i 这个i 变量在实际访问的时候才 去获取了i的值
怎么破 看楼上