1 回答

TA贡献1828条经验 获得超3个赞
// 1、ES6 let解决
function img(){
var this_img = document.getElementsByClassName('this_img');
var s_img=document.getElementsByClassName('s_img');
for(let i=0;i<this_img.length;i++){
this_img[i].addEventListener("click", function(){
this.className='on';
s_img[i].style.color="red";
}, false);
}
}
// 2、闭包解决
function img(){
var this_img = document.getElementsByClassName('this_img');
var s_img=document.getElementsByClassName('s_img');
for(var i=0;i<this_img.length;i++){
(function(i){
this_img[i].addEventListener("click", function(){
this.className='on';
s_img[i].style.color="red";
}, false);
})(i);
}
}
// 3、ES5或ES6将DOM节点转数组解决
function img(){
var this_img = document.getElementsByClassName('this_img');
var s_img=document.getElementsByClassName('s_img');
var nodes = [].slice.call(this_img); // 也可以用ES6的Array.from将DOM节点转数组 // var nodes = Array.from(this_img);
nodes.forEach(function(node,index) {
node.addEventListener("click", function(){
node.className='on';
s_img[index].style.color="red";
}, false);
});
}
// 4、或者前面两个答案提供的方案
function img(){
var this_img = document.getElementsByClassName('this_img');
var s_img=document.getElementsByClassName('s_img');
for(var i=0;i<this_img.length;i++){
this_img[i].index = i;
this_img[i].onclick =function(){
this.className='on';
s_img[this.index].style.color="red";
};
}
}
添加回答
举报