Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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 set interval在奇怪的时间调用函数_Javascript - Fatal编程技术网

Javascript set interval在奇怪的时间调用函数

Javascript set interval在奇怪的时间调用函数,javascript,Javascript,我有5个div,我想在调用函数时更改其颜色,但是每次调用函数时,设置间隔中给定的时间似乎会减少 let runways = [runway1, runway2, runway3, runway4, runway5]; const checkRunway = () =>{ for(let i = 0; i < runways.length; i++){ if(runways[i].available === true){ runways

我有5个div,我想在调用函数时更改其颜色,但是每次调用函数时,设置间隔中给定的时间似乎会减少

let runways = [runway1, runway2, runway3, runway4, runway5];

const checkRunway = () =>{
    for(let i = 0; i < runways.length; i++){
        if(runways[i].available === true){
            runways[i].available = false
            document.getElementById(`runway${[i]}`).style.backgroundColor = 'red'
            break;
        }
    }
}

const landing = () =>{
    if(selection.value == 'DC35'){
        checkRunway();
        setInterval(function(){
          runways[i].available = true; 
          document.getElementById(`runway${[i]}`).style.backgroundColor = 'green'
        }, 1000)
    }
} 
let跑道=[1号跑道、2号跑道、3号跑道、4号跑道、5号跑道];
常数检查跑道=()=>{
for(设i=0;i{
如果(selection.value==“DC35”){
检查跑道();
setInterval(函数(){
跑道[i]。可用=真;
document.getElementById(`runway${[i]}`)。style.backgroundColor='green'
}, 1000)
}
} 

您的
设置间隔
时间没有减少,也没有停止。您从未告诉它停止,因此最可能发生的情况是,每次调用函数时,您都在复制
setInterval
s,这意味着多次运行。这会给你一个错误的印象,你当前的点击会更快地引起反应。实际上,它是一个正在执行的前一个
setInterval

如果您只希望它发生一次,请说
onclick
,然后改用
setTimeout

setTimeout(function() {
    runways[i].available = true; 
    document.getElementById(`runway${[i]}`).style.backgroundColor = 'green'
}, 1000);

landing
是如何/何时调用的?您甚至可以如何调用跑道[i]。在着陆中可用[i]?还是我的Javascript太差了?我想你可能把
setInterval
和。也就是说,您的代码正在做什么还不清楚,等等。我们需要一个here@FedericoklezCulloca在我的html文档中,使用带有按钮的onclick调用landing函数。您正在以对象数组的形式访问跑道,但我看到的只是无效的字符串数组?