首先先看代碼:
html代碼部分:
<div id="div">
<ul>
<li>1111111</li>
<li>2222222</li>
<li>3333333</li>
<li>4444444</li>
<li>5555555</li>
<li>6666666</li>
</ul>
</div>
對應的JS的代碼部分:
var list = document.getElementsByTagName("li");
for(var i = 0; i < list.length; i++) {
list[i].onclick = function() {
console.log(i);
}
}
上面當我們在ul li遍歷時,點擊每一個li標簽,往往取不到對應的下角標,在控制台打印出來的都是最后一個的值6。
為什么會產生這樣的問題呢?
解決方案一:
JS方法
var list = document.getElementsByTagName("li");
for(var i = 0; i < list.length; i++) {
list[i].index = i;
list[i].onclick = function() {
console.log(this.index);
}
}
解決方案二:
jquery方法
$(function() {
$('#div').find('li').each(function() {
$(this).click(function() {
console.log($(this).index());
})
})
})
上面記得別忘了引入jQuery框架。
解決方案三:
直接利用jquery中的index
$(function() {
$("li").on("click", function() {
var i = $(this).index(); //當前索引值
alert(i);
})
})
解決方案四:
window.onload = onclickList;
function onclickList() {
var list = document.getElementsByTagName("li");
for(var i = 0; i < list.length; i++) {
list[i].onclick = (function(i) {
return function() {
alert("我是第" + (i + 1) + "個list");
}
}(i))
}
}
解決方案五:
$(function() {
$('ul li').click(function() {
alert($(this).index() + 1);
return false;
});
});
轉載自:https://www.cnblogs.com/wangzhenhai/p/6484933.html
