Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么添加参数时会停止功能_Javascript_Html_Fadein - Fatal编程技术网

Javascript 为什么添加参数时会停止功能

Javascript 为什么添加参数时会停止功能,javascript,html,fadein,Javascript,Html,Fadein,我有一个代码,我正试图使用函数中的参数执行该代码,即- function startFadeEffect(elem){ }; 我已经使elem等于全局范围内的变量b,其中b是一个图像数组。意义- var elem = b[imgNumb]; imgNumb是一个全局为“0”的变量,在函数中定义为 imgNumb = imgNumb + count; 现在,我的当前代码“不带”参数工作正常- function startFadeEffect(){ var opacSetting =

我有一个代码,我正试图使用函数中的参数执行该代码,即-

function startFadeEffect(elem){ };
我已经使elem等于全局范围内的变量b,其中b是一个图像数组。意义-

var elem = b[imgNumb];
imgNumb是一个全局为“0”的变量,在函数中定义为

imgNumb = imgNumb + count;
现在,我的当前代码“不带”参数工作正常-

function startFadeEffect(){
    var opacSetting = noOpac / 10;
    b[imgNumb].style.opacity = opacSetting; 
    b[imgNumb].style.display = "block";
    noOpac++;
    if(noOpac < 0){
        opacSetting = 0;    
    }
    if(opacSetting == 1){
        clearTimeout(timer);
        b[imgNumb].style.opacity = 1;
        noOpac = 0;
        return false;
    }
    var timer = setTimeout(startFadeEffect, 75);
}
函数startFadeEffect(){
var opacSetting=noOpac/10;
b[imgNumb].style.opacity=opacSetting;
b[imgNumb].style.display=“block”;
noOpac++;
if(noOpac<0){
opacset=0;
}
如果(opacSetting==1){
清除超时(计时器);
b[imgNumb].style.opacity=1;
noOpac=0;
返回false;
}
var定时器=设置超时(startFadeEffect,75);
}
但是,当我使用这样的参数时,它对我不起作用:(

功能启动效果(elem){
var opacSetting=noOpac/10;
elem.style.opacity=opacSetting;
elem.style.display=“块”;
noOpac++;
if(noOpac<0){
opacset=0;
}
如果(opacSetting==1){
清除超时(计时器);
elem.style.opacity=1;
noOpac=0;
返回false;
}
var timer=setTimeout(startFadeEffect(elem),75);
}

请注意,我已经在文件的全局范围内定义了elem变量。另外,我只寻找一个JS解决方案,没有像JQuery这样的库!谢谢

这部分不正确:

setTimeout(startFadeEffect(elem), 75);
应该是:

setTimeout(function () {
    startFadeEffect(elem);
}, 75);


setTimeout
需要一个函数作为它的第一个参数。
startFadeEffect(elem)
立即执行(并且不返回函数)。因此发生的情况是
startFadeEffect
递归调用自己,直到
opacSetting==1
中断递归。

这部分不正确:

setTimeout(startFadeEffect(elem), 75);
应该是:

setTimeout(function () {
    startFadeEffect(elem);
}, 75);


setTimeout
需要一个函数作为它的第一个参数。
startFadeEffect(elem)
立即执行(不返回函数)。因此发生的是,
startFadeEffect
递归调用自身,直到
opacSetting==1
中断递归。

您如何调用函数…?什么是“不工作”意味着什么?有错误吗?您检查过吗?您如何调用函数…?什么是“不工作”意思是?有错误吗?你检查过吗?我会使用
startFadeEffect.bind(null,elem)
而不是匿名函数包装器,但是,是的,相同的区别…我想这取决于个人偏好。因为我们没有一个明确的
thisArg
目标,使用
bind
感觉有点不合适。好的,谢谢,它可以工作,但现在我的var elem=b[imgNumb];在函数之外不起作用了。你知道为什么吗[imgNumb-1];当我把它放在全局空间中时,它不起作用。但是,当我把它放在函数中时,让我们说startFadeEffect(elem);它起作用了!我会使用
startFadeEffect.bind(null,elem)
而不是匿名函数包装器,但是,是的,相同的区别…我想这取决于个人偏好。因为我们没有一个明确的
thisArg
目标,使用
bind
感觉有点不合适。好的,谢谢,它可以工作,但现在我的var elem=b[imgNumb];在函数之外不起作用了。你知道为什么吗[imgNumb-1];当我把它放在全局空间中时,它不起作用。但是,当我把它放在函数中时,让我们说startFadeEffect(elem);它起作用了!