Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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中调用无元素ID的setTimeout_Javascript_Settimeout - Fatal编程技术网

在Javascript中调用无元素ID的setTimeout

在Javascript中调用无元素ID的setTimeout,javascript,settimeout,Javascript,Settimeout,我有以下Javascript中淡入淡出动画的代码: var ticks = 20; function fadein(tick,element){ if(element == null) return; element.style.opacity = tick/ticks; if(tick < ticks) { var s = "fadein(" + (tick+1) + "," + element + ")"; se

我有以下Javascript中淡入淡出动画的代码:

var ticks = 20;
function fadein(tick,element){
    if(element == null)
        return;

    element.style.opacity = tick/ticks;
    if(tick < ticks) {
        var s = "fadein(" + (tick+1) + "," + element + ")";
        setTimeout(s, 500/ticks);
    }
}

元素转换为其字符串表示形式,并在下一次迭代中导致错误。我知道如果我所有的元素都通过eid有ID的话,我可以做到这一点,但是我想在很多不同的事情(在不同的时间)中淡入淡出,并且不想为每个元素命名。在js中有没有这样做的方法?

使用匿名函数而不是字符串来调用
setTimeout
。这样,您就可以轻松访问
fadein
函数中的所有变量

除此之外,将
setTimeout
setInterval
与字符串参数一起使用被认为是不好的做法

var ticks = 20;
function fadein(tick,element){
    if(element == null)
        return;

    element.style.opacity = tick/ticks;
    if(tick < ticks) {
        setTimeout( function() { fadein( tick+1, element ); }, 500/ticks);
    }
}
var ticks=20;
功能fadein(勾号,元素){
if(元素==null)
返回;
element.style.opacity=勾号/勾号;
如果(勾号<勾号){
setTimeout(函数(){fadein(tick+1,元素);},500/个ticks);
}
}

使用匿名函数而不是字符串来调用
setTimeout
。这样,您就可以轻松访问
fadein
函数中的所有变量

除此之外,将
setTimeout
setInterval
与字符串参数一起使用被认为是不好的做法

var ticks = 20;
function fadein(tick,element){
    if(element == null)
        return;

    element.style.opacity = tick/ticks;
    if(tick < ticks) {
        setTimeout( function() { fadein( tick+1, element ); }, 500/ticks);
    }
}
var ticks=20;
功能fadein(勾号,元素){
if(元素==null)
返回;
element.style.opacity=勾号/勾号;
如果(勾号<勾号){
setTimeout(函数(){fadein(tick+1,元素);},500/个ticks);
}
}

您可以传递函数而不是字符串。。。纯js

setTimeout(function(){.....}, 500/ticks);

您可以传递函数而不是字符串。。。纯js

setTimeout(function(){.....}, 500/ticks);

使用函数而不是字符串:

var f = function () { fadein(tick+1, element) };
window.setTimeout(f, 500/ticks);
通过这种方式,您可以将元素作为参数发送,而无需将其转换为字符串表示形式


setTimeout
方法中使用字符串曾经是唯一的方法,但现在使用函数被认为是更好的做法。

使用函数而不是字符串:

var f = function () { fadein(tick+1, element) };
window.setTimeout(f, 500/ticks);
通过这种方式,您可以将元素作为参数发送,而无需将其转换为字符串表示形式


setTimeout
方法中使用字符串曾经是唯一的方法,但现在使用函数被认为是更好的做法。

将setTimeout或setInterval与字符串参数一起使用被认为是不好的做法。为什么?@RobG引用MDN:“由于与使用eval()相同的原因,不建议使用此语法,并带有指向Cool的链接。”。无论您在何处编写短语“不良做法”或“最佳做法”或类似内容,请务必解释原因。
将setTimeout或setInterval与字符串参数一起使用被视为不良做法。
。为什么?@RobG引用MDN:“由于与使用eval()相同的原因,不建议使用此语法,并带有指向Cool的链接。”。无论你在哪里写“坏习惯”或“最佳实践”或类似的短语,都要解释原因。