1. 缺点的对this进行引用
如不雅我们有10个元素,那么点击任何一个元素都邑显示“元素编号#10”!因为在 onclick
被调用的时刻,for轮回已经停止,是以所有的i都是10。
解法:
var elements = document.getElementsByTagName('input');var n = elements.length; // 假设有10个元素var makeHandler = function(num) { // outer function return function() { // inner function console.log("元素编号##" + num); };};for (var i = 0; i < n; i++) { elements[i].onclick = makeHandler(i+1);}
makeHandler
在for轮回履行的时刻急速被调用,获取到当前的值 i+1
,并且存储在变量 num
中。 makeHandler
返回一个函数应用 num
变量,该函数被绑定到元素的点击事宜。
平日在这种情况下,调用
推荐阅读
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 在初步测试时代,IBM 应用了配有 8GB GDDR5 内存的 NVIDIA Quadro M4000 显卡。在这种价格适中的专业图形卡上 IBM 证实,与标准的>>>详细阅读
地址:http://www.17bianji.com/lsqh/39495.html
1/2 1