js 匿名函数中调用有参函数,但有参函数的参数没有根据变量进行相应的变化

在匿名函数中调用有参函数,有参函数的参数是变量,如下代码

for(var k=0; k<piclength; k++){
picList[k].onmouseover = function() {
picMovement('ifocus_piclist',0,-225*k,5);
classNormal('ifocus_btn','ifocus_tx');
classCurrent('ifocus_btn','ifocus_tx',k);
}
}
//piclength在我这是=4的
为什么到了picMovement函数中第三个参数 总是=-900,而不是从0 到 piclength,也就是说 k变量没起到我预想的作用

你把完整的代码粘出来啊。

这个是对变量的赋值。
或看看私信,我来远程助你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-15
for (var k = 0; k < piclength; k++) {   
        picList[k].index = k;
        picList[k].onmouseover = function() {
            picMovement ('ifocus_piclist', 0, -225 * this.index, 5);
            classNormal ('ifocus_btn', 'ifocus_tx');
            classCurrent ('ifocus_btn', 'ifocus_tx', this.index);
        }
    }

追问

你好,问题按照你的写法,解决了,能解释下为什么要这么写么

追答

因为你的里面的 onmouseover函数是闭包函数,在起作用的时候,k就是最大值


所以为了解决这个问题,就将索引存储在dom元素上,方便获取和设置


这样就保证了不同的dom元素拥有不同的索引值


其次还可以这样写:

// 传入参数 k
var fun = function(k, picList) 
{
    picList[k].onmouseover = function() 
    {
        picMovement ('ifocus_piclist', 0, -225 * k, 5);
        classNormal ('ifocus_btn', 'ifocus_tx');
        classCurrent ('ifocus_btn', 'ifocus_tx', k);
    }
}

for (var k = 0; k < picList.length; k++) 
{   
    // 调用
    fun (k, picList);
}

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网