以上的代碼查乒,我們要實(shí)現(xiàn)的一個(gè)功能是,實(shí)現(xiàn)點(diǎn)擊每個(gè) li 標(biāo)簽時(shí)候彈出當(dāng)前點(diǎn)擊的那個(gè) li 標(biāo)簽的索引郁竟,這里我們用的是 javascript 的原生方法玛迄。
var len = document.querySelectorAll('li').length; //獲取li標(biāo)簽的長(zhǎng)度
var obj = document.querySelectorAll('li'); //取得li這個(gè)對(duì)象
for(var i = 0;i < len ; i++){
obj[i].onclick=function(){
alert(i);
};
}
錯(cuò)誤理解蓖议,循環(huán)三次,依次對(duì) li 標(biāo)簽綁定點(diǎn)擊事件讥蟆,在綁定的時(shí)候彈出循環(huán)的索引(此時(shí)循環(huán)的索引是和 li 標(biāo)簽的索引是一致的)勒虾。
現(xiàn)在當(dāng)我們?nèi)c(diǎn)擊的時(shí)候,會(huì)發(fā)現(xiàn)無(wú)論我們點(diǎn)擊那個(gè)標(biāo)簽瘸彤,彈出的都是3,顯然這不是我們?nèi)魏我粋€(gè)表現(xiàn)的索引修然,但是我們發(fā)現(xiàn)我們標(biāo)簽的長(zhǎng)度是3,最大的索引是2,而這里的3正好是 for 跳出循環(huán)的值质况。為了驗(yàn)證這個(gè)說(shuō)法愕宋,我們逐步次添加標(biāo)簽,再次證明了我們的說(shuō)法结榄。
var len = document.querySelectorAll('li').length;
var obj = document.querySelectorAll('li');
console.log(document.querySelectorAll('li').length);
for(var i = 0;i < len ; i++){
(function(i){
obj[i].onclick=function(){
alert(i);
};
})(i);
}
var len = document.querySelectorAll('li').length;
var obj = document.querySelectorAll('li');
console.log(document.querySelectorAll('li').length);
var arr = [];
for(var i = 0;i < len ; i ++){
arr.push(obj[i]);
}
arr.map(function(currentValue,index,array){
currentValue.onclick=function(){
alert(index);
}
});