我尝试将javaScript中的“setInterval”函数分配给一个变量,以便我可以终止该函数并根据需要重新启动它

问题描述 投票:0回答:1

我的目标是使用“setInterval()”函数每 5 秒更改一次选定的单选按钮。 但用户也可以手动选择链接单选按钮的标签(链接单选按钮的标签是在 HTML 中完成的) 如果用户手动选择链接标签; “setInterval()”函数应该选择下一个收音机并继续。

let radios = document.getElementsByClassName("manualRadio");
let repeater;

function startRepeating(current){

    repeater = setInterval(function(current){

    document.getElementById("radio" + current).checked = true;
    current++;
      if(current > 4){
        current = 1;
      }
}, 5000);
}

startRepeating(1);

for (let i = 0; i < radios.length; i++){
    radios[i].addEventListener("click", function(){
       let currentClicked = this.getAttribute("id").slice(10, 11);
       clearInterval(repeater);
        startRepeating(currentClicked);
        
        
    });

}

我厌倦了调试代码,发现函数没有按预期分配给中继器变量(如第一张图片(link-1)所示) 文字

程序在下一行崩溃,如第二张图所示(link-2) 文字

javascript
1个回答
0
投票

问题出在这一行

setInterval(function(current){
current
未定义

let radios = document.getElementsByClassName("manualRadio");
let repeater;

function startRepeating(current) {

  repeater = setInterval(function() {
    console.log(current)
    document.getElementById("radio" + current).checked = true;
    current++;
    if (current > 4) {
      current = 1;
    }
  }, 5000);
}

startRepeating(1);

for (let i = 0; i < radios.length; i++) {
  radios[i].addEventListener("click", function() {
    let currentClicked = this.getAttribute("id"); //.slice(10, 11);
    clearInterval(repeater);
    startRepeating(currentClicked);


  });

}
<label for='radio1'>1</label>
<input type='radio' id='radio1'>
<label for='radio2'>2</label>
<input type='radio' id='radio2'>
<label for='radio3'>3</label>
<input type='radio' id='radio3'>
<label for='radio4'>4</label>
<input type='radio' id='radio4'>
<label for='radio5'>5</label>
<input type='radio' id='radio5'>

© www.soinside.com 2019 - 2024. All rights reserved.