为什么结果都是5
why the results are all 5?
可能重复:
JavaScript闭包是如何工作的?
<script type="text/javascript">
function init() {
var pArry = document.getElementsByTagName("p");
for( var i=0; i<pAry.length; i++ ) {
pArry[i].onclick = function() {
alert(i);
}
}
}
</script>
</head>
<body onload="init();">
<p>test 0</p>
<p>test 1</p>
<p>test2</p>
<p>test3</p>
<p>test4</p>
为什么结果都是5?我希望结果是(0,1,2….)。
创建该函数时,它引用的是i
,而不是i
的值。尝试冻结i
:的值
function init() {
var pArray = document.getElementsByTagName("p");
for( var i=0; i<pAry.length; i++ ) {
(function(i) {
pArray[i].onclick = function() {
alert(i);
};
})(i);
}
}
相关文章:
- 解析-为什么user.getSessionToken()返回未定义的结果
- 为什么_self结果是不同的价值观
- 为什么我得到“;结果“;对于这次关闭
- 为什么-0===0的求值结果为true
- 为什么我的文本框没有用查询结果更新
- 为什么下面给出的表达式在javascript中的求值结果为30
- 为什么我的javascript地理编码函数返回空白结果
- 为什么结果是全局名称,这是由“这个”引起的
- 为什么不'我的扩展程序不会出现在Chrome网上商店的搜索结果中
- 为什么纬度结果对象从谷歌地图 API 更改
- 为什么这个 fs.readFile 循环没有将其结果推送到我的数组
- 为什么这个js代码的RSA加密结果与java的RSA标准代码不同
- 为什么由于数组中数字1的位置,我会从函数中得到不同的结果
- 为什么两次运行完全相同的正则表达式的结果不同
- 为什么在给出第一个结果后仍然调用此方法
- 为什么这个JavaScript代码的结果是“;未定义”;
- Javascript 函数.可变结果.为什么未定义或没有 如果 else 语句函数
- jquery tmpl 总和结果为什么是四倍
- Jquery函数不等待Javascript函数的结果为什么?
- c# WebBrowser运行Javascript -返回空白页面与Javascript的结果-为什么