我有一个非常基本的功能,可以获取数字时间,并且想知道是否可以将“ elementToChange”设置为参数。当我尝试执行此操作时,它会卡在setTimout函数上,因为它没有采用相同的参数。
有什么方法可以更改代码,以便我可以简单地将要更改的元素作为参数,并在给定的时间间隔内重复执行该功能?
function setDigitalTime(){
let today = new Date();
let h = today.getHours();
let m = today.getMinutes();
let s = today.getSeconds();
if(m < 10){m = "0" + m;}
if(s < 10){s = "0" + s;}
document.getElementById("elementToChange").innerHTML = h+" : "+m+" : "+s;
setTimeout(setDigitalTime,500);
}
setTimeout
第一个和第二个之后的其他参数是用来调用回调函数的参数。例如setTimeout((arg) => console.log(arg), 500, 'foo')
将foo
在500毫秒后打印。因此,一种选择是使用传递给的参数setDigitalTime
作为setTimeout
的第三个参数:
function setDigitalTime(id){
let today = new Date();
let h = today.getHours();
let m = today.getMinutes();
let s = today.getSeconds();
if(m < 10){m = "0" + m;}
if(s < 10){s = "0" + s;}
document.getElementById(id).innerHTML = h+" : "+m+" : "+s;
setTimeout(setDigitalTime, 500, id);
}
您可以为其他参数遵循相同的模式-传递给的第四个参数setTimeout
代表用来调用回调函数的第二个参数,依此类推。
另一个选择是拥有一个匿名内联函数,该函数调用setDigitalTime(id)
:
function setDigitalTime(id){
let today = new Date();
let h = today.getHours();
let m = today.getMinutes();
let s = today.getSeconds();
if(m < 10){m = "0" + m;}
if(s < 10){s = "0" + s;}
document.getElementById(id).innerHTML = h+" : "+m+" : "+s;
setTimeout(() => setDigitalTime(id), 500);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句