在匿名函数中调用有参函数,有参函数的参数是变量,如下代码
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);
}
}追问
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);
}本回答被提问者和网友采纳
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元素拥有不同的索引值
其次还可以这样写:
// 传入参数 kvar 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);
}本回答被提问者和网友采纳