首页 > 解决方案 > 在循环中检查了错误的更改属性

问题描述

在循环中检查更改属性时,仅更改第二个和第三个单选按钮

        <input type="radio" name="slides" id="point1" checked>
        <input type="radio" name="slides" id="point2">
        <input type="radio" name="slides" id="point3">


        <script type="text/javascript"> 

            function isChecked () {
                const elem=document.querySelectorAll('[name="slides"]');
                for (let i = elem.length-1; i >-1; i--) {
                    if (elem[i].checked) {
                        elem[i].checked=false;
                            if (i!=2) {
                            elem[i+1].checked=true;
                            }
                            else {
                            document.querySelectorAll('#point1').checked=true;
                            elem[0].checked=true;
                            }
                    }
                }
            }
            setInterval(()=>{isChecked()},2000);
        </script>

我预计改变会从第一到第三

标签: javascript

解决方案


你没有使用break,我也改变了一点逻辑:

function isChecked() {
  const elem = document.querySelectorAll('[name="slides"]');
  for (let i = elem.length - 1; i > -1; i--) {
    if (elem[i].checked) {
      elem[i].checked = false;
      elem[(i + 1) % elem.length].checked = true;
      break;
    }
  }
}
setInterval(() => {
  isChecked()
}, 500);
<input type="radio" name="slides" id="point1" checked>
<input type="radio" name="slides" id="point2">
<input type="radio" name="slides" id="point3">

原来的:

function isChecked() {
  const elem = document.querySelectorAll('[name="slides"]');
  for (let i = elem.length - 1; i > -1; i--) {
    if (elem[i].checked) {
      elem[i].checked = false;
      if (i != 2) {
        elem[i + 1].checked = true;
      } else {
        document.querySelectorAll('#point1').checked = true;
        elem[0].checked = true;
      }
      break;
    }
  }
}
setInterval(() => {
  isChecked()
}, 500);
<input type="radio" name="slides" id="point1" checked>
<input type="radio" name="slides" id="point2">
<input type="radio" name="slides" id="point3">


推荐阅读