js原生写轮播经常见到的问题就是for循环嵌套事件,就容易出现循环变量并不能为事件所用的现象,例子如下:
var myObj=document.getElementsByTagName('img');
for(j = 0; j< myObj.length ; j++){
myObj[j].onclick = function(){
myObj[j].style.display= 'block';
}
}
这里会报错,因为j并不会如所想一样添加事件,添加事件的j为myObj.length,处理方式如下,也就是把变量异步一下下,
"use strict";
var myObj = document.getElementsByTagName('img');
var _loop = function _loop(j) {
myObj[j].onclick = function () {
myObj[j].style.display= 'block';
};
};
for (var j = 0; j < myObj.length; j++) {
_loop(j);
}