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

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,899评论 0 1
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,842评论 2 17
  • 我们首先要明白,我们给页面添加效果用到的js到底是什么?js其实包含三部分:dom 文档对象模型 bom 浏览...
    一直以来都很好阅读 817评论 0 0
  • 1. 那天跟J说起摘的草莓被哥俩两天就吃完了,我都没来得及做草莓果酱。 J还没反应,坐在后排座位的力力叫到:“妈妈...
    天使鱼001阅读 471评论 0 3
  • 给大家总结网络请求过程: 三次握手图集: 看了此图, 于是乎,问题来了, 不是TCP链接的时候需要三次握手么( h...
    SOI阅读 10,372评论 11 109