javascript - 在循环中检查了错误的更改属性
问题描述
在循环中检查更改属性时,仅更改第二个和第三个单选按钮
<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>
我预计改变会从第一到第三
解决方案
你没有使用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">
推荐阅读
- python - 如何将张量流张量转换为 keras 张量或调整 keras 特征图的大小?
- optimization - 在基于拉取和推送的通知之间选择折衷
- aws-serverless - CloudFormation 堆栈“sls-dev”,
- javascript - 使用 PHP 将文件上传到 Google Cloud Storage Bucket
- bash - 为什么在 ERR 陷阱中退出 0 时 bash 会抑制标准输出?
- css - CSS网格并指定多个区域
- stackblitz - 刷新页面后从 stackblitz 中恢复代码
- android - 尝试使用 mainClassName 时出错
- excel - 有没有办法从 Sheet1 上的单元格或单元格范围中提取值并将其放在左页脚中,并为页脚设置字体颜色?
- python - 如何使用 Python 进入 Outlook 并列出具有特定主题名称的电子邮件的接收日期?