gpt4 book ai didi

javascript - 如何在给定的时间间隔重复具有相同参数的函数(目前正在尝试使用 setTimout)

转载 作者:行者123 更新时间:2023-11-28 00:40:19 25 4
gpt4 key购买 nike

我有一个获取数字时间的非常基本的函数,想知道是否可以将“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') 将在 500 毫秒后打印 foo。因此,一种选择是使用传递给 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);
}

关于javascript - 如何在给定的时间间隔重复具有相同参数的函数(目前正在尝试使用 setTimout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53861155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com