为什么添加参数后停止功能
Why Parameter Stops Function When Added
我有一个代码,我正在尝试使用函数中的参数执行,即 -
function startFadeEffect(elem){ };
我已经使 elem 等于全局范围内的变量 b,其中 b 是一个图像数组。含义-
var elem = b[imgNumb];
imgNumb 是一个变量,全局为“0”,在函数内部定义为
imgNumb = imgNumb + count;
现在,我当前的代码 "without" 参数工作完美 -
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);
}
但是,当我使用这样的参数时,它对我不起作用:(
function startFadeEffect(elem){
var opacSetting = noOpac / 10;
elem.style.opacity = opacSetting;
elem.style.display = "block";
noOpac++;
if(noOpac < 0){
opacSetting = 0;
}
if(opacSetting == 1){
clearTimeout(timer);
elem.style.opacity = 1;
noOpac = 0;
return false;
}
var timer = setTimeout(startFadeEffect(elem), 75);
}
请注意,我已经在文件的全局范围内定义了 elem 变量。另外,我只是在寻找一个 JS 解决方案,没有像 JQuery 这样的库!谢谢
这部分不正确:
setTimeout(startFadeEffect(elem), 75);
应该是:
setTimeout(function () {
startFadeEffect(elem);
}, 75);
setTimeout
需要一个函数作为它的第一个参数。 startFadeEffect(elem)
立即执行(return 不是函数)。所以发生的事情是 startFadeEffect
递归调用自身直到 opacSetting == 1
中断递归。
我有一个代码,我正在尝试使用函数中的参数执行,即 -
function startFadeEffect(elem){ };
我已经使 elem 等于全局范围内的变量 b,其中 b 是一个图像数组。含义-
var elem = b[imgNumb];
imgNumb 是一个变量,全局为“0”,在函数内部定义为
imgNumb = imgNumb + count;
现在,我当前的代码 "without" 参数工作完美 -
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);
}
但是,当我使用这样的参数时,它对我不起作用:(
function startFadeEffect(elem){
var opacSetting = noOpac / 10;
elem.style.opacity = opacSetting;
elem.style.display = "block";
noOpac++;
if(noOpac < 0){
opacSetting = 0;
}
if(opacSetting == 1){
clearTimeout(timer);
elem.style.opacity = 1;
noOpac = 0;
return false;
}
var timer = setTimeout(startFadeEffect(elem), 75);
}
请注意,我已经在文件的全局范围内定义了 elem 变量。另外,我只是在寻找一个 JS 解决方案,没有像 JQuery 这样的库!谢谢
这部分不正确:
setTimeout(startFadeEffect(elem), 75);
应该是:
setTimeout(function () {
startFadeEffect(elem);
}, 75);
setTimeout
需要一个函数作为它的第一个参数。 startFadeEffect(elem)
立即执行(return 不是函数)。所以发生的事情是 startFadeEffect
递归调用自身直到 opacSetting == 1
中断递归。