请问下4-5的编程题

来源:4-5 编程练习

hpbrave

2018-07-17 12:53:48

有两个问题想请问下哈:

  1. 我理解在for三次循环结束后,匿名函数内的i就永远变成3了,但是在头三次循环时,alert出的i+1为什么也是4啊?

  2.  下面是我修改之后的代码,从结果看来应该是正确的,但还是有些地方不太懂。程序开始后,我任意乱序点击一个按钮,都可以输出当前正确的i值;程序没有运行次数限制,点击多少次都可以。我想请问下,for循环在程序里的作用是什么啊,因为程序最终的输出跟for循环的顺序没有关系(比如第一次应该是i=0,但是如果我第一次点击了按钮3,输出的就是3),而且程序运行的次数也不受i<3的限制,只要点击按钮,就可以使程序一直运行下去。虽然fn在for循环内,但是调用fn的条件似乎是用户的点击事件。

非常感谢!

var btns = document.getElementsByTagName('button');
         for (var i = 0; i < 3; i++) {
            fn(btns,i);
	     }
	    
	    function fn(btns,i) {
	    	 btns[i].onclick = function(){
	    	   alert(i+1);
	    	 }
	   	}


写回答

1回答

好帮手慕星星

2018-07-17

1、题目中给出的代码:

http://img.mukewang.com/climg/5b4d90c70001619c06720153.jpg

for循环执行的时候,只是将点击事件绑定在按钮上,但是当点击按钮执行代码的时候,i值已经变成了3,所以无论点击哪个按钮,弹出的都是4.

2、你写的代码是正确的,for循环操作只是给三个按钮绑定事件,当i=0的时候,就会给btns[0]第一个按钮绑定上事件,以此类推,i值变化之后,就给当前按钮绑定一个事件,直到for循环结束。无论多次点击都会弹出是因为按钮已经有这个事件了。

自己再理解下,祝学习愉快~~

0

0 学习 · 4826 问题

查看课程

相似问题