js 轮播Cannot read property 'xxx' of undefined

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);

}

你可能感兴趣的:(js 轮播Cannot read property 'xxx' of undefined)