在Javascript中调用无元素ID的setTimeout
我有以下Javascript中淡入淡出动画的代码:在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
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的链接。”。无论你在哪里写“坏习惯”或“最佳实践”或类似的短语,都要解释原因。