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";
};
}
}
添加回答
舉報