Javascript addEventListener的参数不';似乎工作不正常

Javascript addEventListener的参数不';似乎工作不正常,javascript,for-loop,while-loop,addeventlistener,Javascript,For Loop,While Loop,Addeventlistener,我正在创建一个“幻灯片”,如果你会称之为页面导航 我正在尝试使用forloop向所有菜单项添加eventlistener。而且它似乎不起作用。基本上,我有一个基于参数显示新页面的函数 function slidePFer(page_side){ 通过如下手动设置eventlisteners,这将非常有效: showPF = document.getElementsByClassName('showPF'); showPF[0].addEventListener('click', funct

我正在创建一个“幻灯片”,如果你会称之为页面导航

我正在尝试使用forloop向所有菜单项添加eventlistener。而且它似乎不起作用。基本上,我有一个基于参数显示新页面的函数

function slidePFer(page_side){
通过如下手动设置eventlisteners,这将非常有效:

showPF  = document.getElementsByClassName('showPF');

showPF[0].addEventListener('click', function(){ slidePFer(0); }, false);
showPF[1].addEventListener('click', function(){ slidePFer(1); }, false);
showPF[2].addEventListener('click', function(){ slidePFer(2); }, false);
showPF[3].addEventListener('click', function(){ slidePFer(3); }, false);
然而,这看起来很混乱。所以我尝试用不同的循环来运行它。我就是不能让它工作,下面是我尝试过的一个更有希望的循环:

for(var i=0, n=showPF.length; i<n; i++){
    showPF[i].addEventListener('click', function(){ slidePFer(i); }, false);
}
对于(var i=0,n=showPF.length;i从函数(i)中删除i)也许这将用jQuery()修复它,您可以这样简化:

showPF  = document.getElementsByClassName('showPF');

showPF[0].addEventListener('click', function(){ slidePFer(0); }, false);
showPF[1].addEventListener('click', function(){ slidePFer(1); }, false);
showPF[2].addEventListener('click', function(){ slidePFer(2); }, false);
showPF[3].addEventListener('click', function(){ slidePFer(3); }, false);
html


javascript

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('.showPF').click(function() {
            slidePFer($(this).attr('slideNo'));
        });
    });
    function slidePFer(slideNo) {
        // todo
    }
</script>

$(文档).ready(函数(){
$('.showPF')。单击(函数(){
slidePFer($(this.attr('slideNo'));
});
});
函数slidePFer(slideNo){
//待办事项
}

我终于为所有感兴趣的人找到了解决方案我就是这样做的:

showPF          = document.getElementsByClassName('showPF');

var i = showPF.length;
    while(i--){
        showPF[i].addEventListener('click', function(x){ return function(){ slidePFer(x); }; }(i),false);
    }
信贷,其中信贷:

试过了。我添加了“I”以查看这是否是我的错误,但这不是提示的thx:)还有样例的价值是什么?也许这一定是在炫耀。长啊,这不是样本的价值。这是一个数组。我以前做过,但没有使用addeventlisteners。您应该添加这一行
alert(swatches.length)for循环上方的行以检查数组是否有长度。我知道.length有效。因为我很久以前就发出了警告:)当时的想法和你现在一样。但这并不是问题所在,他们应该声明我在没有jQuery的情况下这样做。thx然而,对于您的答复,如果有人知道,我将寻找正确答案?