我正在尝试检查在无序列表中单击了哪个li
。只有第一个li
似乎有效,因为它会提醒0但li
的其余部分不会响应警报。 Nodelist
应包含元素0,1,2。仅限原始javascript。
HTML
<ul class="slideshow-buttons">
<li></li>
<li></li>
<li></li>
</ul>
Javasript
var $ = function (selector) {
return document.querySelector(selector);
};
var knappar = $('.slideshow-buttons').getElementsByTagName('li');
for (var i = 0; i < knappar.length; i++) {
var knapp = knappar[i];
knapp.onclick = knappTryck;
}
问题似乎在knappTryck
function knappTryck(){
var childs = $('.slideshow-buttons').getElementsByTagName("li");
for (var c = 0; c < childs.length; i++) {
if (this == childs[c])
alert (c);
break;
}
}
答案 0 :(得分:0)
问题在于:
for (var c = 0; c < childs.length; i++) {
使用元素c
来解析向量,但增加i
。将c
替换为i
或以其他方式替换
还要在if语句中添加大括号
答案 1 :(得分:0)
由于您使用的是jQuery,因此使用jQuery将其设为100%:) 这将有效:)
jQuery代码:
$(document).ready(function() {
$(".slideshow-buttons li").live("click", function() {
alert($(this).index());
});
});
答案 2 :(得分:0)
首先用i++
替换c++
,然后包括花括号
for (var c = 0; c < childs.length; *c*++) {
if (this == childs[c])*{*
alert (c);
break;
*}*
}
答案 3 :(得分:0)
您可以使用闭包。
for (var i = 0; i < knappar.length; i++) {
var knapp = knappar[i];
knapp.onclick = (function(i){
return function(){
console.log(i, this); // this is the li you clicked, and i is the index
}
})(i);
}