JavaScript里面,我想要用for循环完成以下的内容,代替重复写5次代码。但不知道为什么失败了,

求大神帮忙看一下原因,如图... 求大神帮忙看一下原因,如图 展开
 我来答
百度网友6a957b7
2016-12-10 · TA获得超过1124个赞
知道小有建树答主
回答量:513
采纳率:0%
帮助的人:347万
展开全部

这是典型的作用域的问题。

i的作用域在 function的前面而不是在function里面。  而变量名只是一个指针,指向了值。  也就是唤拿说i只是指向了 1 2 3 4 5这些值,并不是说i就是1 2 3 4 5.   i被循环了5次,所以5个点击事件的n 都等于5,而不是1 2 3 4 5.   改成下面这样,将i传递到function里面去, 因为function的参数是按值传递的,不是按 指针传递。 所以传进去的时候是什么值,取出来则裤就是什么值。孙链简

document.getElementsByTagName('input')[i].onclick = (function(n) {
    n //
})(i);
追问
我听懂了呀,但是我看不太懂您的代码内容。上面的代码是不是等价于下面这段
document.getElementsByTagName('input')[i].onclick = (function(i) {
n //
});i
追答

不等于。  我给你提供的代码可以解决你的问题。 但是会引出新问题,那就是会自动执行那个匿名函数。所以你如果是要绑定事件的话不推荐这样写。你只是要取值N的话,有一大堆的写法, 可以先将N绑定到input的一些DOM上, 然后从DOM上面取值。

for(var i = 0; i < 5; i++){
    var input = document.getElementsByTagName('input')[i];
    input.index = i + i;
    input.onclick = function() {
        n = this.index;
    };
}
匿名用户
2016-12-10
展开全部
i<5的话 i是取不到5的
可以i<6 或者i<=5
更多追问追答
追问
写成i<6,然而还是失败了,括号也补上了
追答
有没有提示啥
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tongyinqiu
2016-12-10 · TA获得超过206个赞
知道小有建树答主
回答量:246
采纳率:81%
帮助的人:175万
展开全部
末尾加个}你写漏了 其他没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式