今天,您看到一个Javascript标题,按照正常循环绑定事件,但结果不需要。
复制代码代码如下所示:
文本

链接

var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
为{我}。onclick =函数(){
警报(一);
返回false;
}
}


1。这个代码点击链接i - 1,为什么会这样

是一个简单的变量范围的功能,如果功能(警戒){(i);return false;}作为一个功能的一个(一);(我)内部变量未定义,但内部使用,所以向外搜索,发现在我的循环定义,循环执行启动后单击事件后,对价值的执行结束后我已经变成1;所以每次弹出的是- 1;

for循环的2.2个参数并不常见!怀疑吗

对于(语句1,语句2,语句3){



}

对于循环条件

通常说语句1、语句2和语句3都是可选的。

b.报表2:

通常,语句2用于评估初始变量的条件。

语句2也是可选的。

如果语句2返回true,循环再次启动,如果返回false,循环将结束。

提示:如果省略语句2,则必须在循环中提供中断。否则循环不能停止。这可能导致浏览器崩溃。

C.关于我——判断:

当我判断--是真/假时,它是第一个判断我,然后是我——当谈到我的最终判断时,当我实际上判断= = 0时,判断再次执行,for循环终止,所以i的值变成1;

var I=1;

!!!我

uff1a解
复制代码代码如下所示:
var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
(函数(i){)
为{我}。onclick =函数(){
警报(一);
返回false;
}
})(一)
}

或:
复制代码代码如下所示:
var = document.getelementsbytagname(A);
对于(var i = as.length;我--;){
var =函数(i){
为{我}。onclick =函数(){
警报(一);
返回false;
}
}
A(I);
}

其他互联网用户7在解决方案演示:
复制代码代码如下所示:



关闭演示


函数init(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick =函数(){
警报(一);
}
}
}



产品1
产品两
产品三
产品四
产品五



1,将变量i保存到每个段落对象(p)
复制代码代码如下所示:
函数init(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
人{我}我=我;
我祈祷{ }。onclick =函数(){
警戒(这一);
}
}
}

2。从变量i保存匿名函数本身
复制代码代码如下所示:
功能init2(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(人{我}。onclick =函数(){()
警报(参数。被叫。我);
})i = i;
}
}

3,用一层闭包,以函数参数的形式传递给内部函数。
复制代码代码如下所示:
功能init3(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(函数)
我祈祷{ }。onclick =函数(){
警报(精氨酸);
};
})(i);调用参数
}
}

4,用一层闭包,以局部变量的形式传递给内存函数。
复制代码代码如下所示:
功能init4(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
(函数(){())
var
我祈祷{ }。onclick =函数(){
警报(临时);
}
});
}
}

5,添加一层闭包并作为响应事件返回函数(注意与3的细微差别)
复制代码代码如下所示:
功能init5(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick=功能(arg){
返回(函数)返回函数
警报(精氨酸);
}
}(一);
}
}

6。事实上,函数实现时,函数的每个实例都会产生闭包。
复制代码代码如下所示:
功能init6(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick =新功能(警报(+我+);); / /新产生一个函数实例一
}
}

7。用功能实现,注意与6的区别
复制代码代码如下所示:
功能init7(){
无功部分= document.getelementsbytagname(P);
对于(var i = 0;i < pary.length;i++){
我祈祷{ }。onclick=功能('alert(+我+ ')')
}
}

完整的总结,欢迎拍砖!