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);它起作用了!