动态地,用检查单选按钮是否有循环

Dynamically, check radio button with for loop

本文关键字:是否 循环 单选按钮 检查 动态      更新时间:2023-09-26

我正在尝试创建一个5星无线电选择器。

这是单选按钮之一:

<input onclick="check(3)" type="radio" name="three" id="num_3_star" value="3">

在方法被调用并传递"3"之后,这是我的javascript函数:

function check(stars)
{
    for(i = 0 ; i < stars; i++)
    {       
        document.getElementById("num_" + stars + "_star").checked = true;
    }   
}

当我运行代码时,它不会执行checked to=true,尽管如果删除for循环,它也可以正常工作。

你知道为什么for循环阻止检查无线电盒子吗?

这是我的全部代码:

<script>
function check(stars)
{
    for(i = 0 ; i < stars; i++)
    {       
        document.getElementById("num_" + stars + "_star").checked = true;
    }   
}
</script>
<form>
<input onclick="check(1)" type="radio" name="one" id="num_1_star" value="1">
<input onclick="check(2)" type="radio" name="two" id="num_2_star" value="2">
<input onclick="check(3)" type="radio" name="three" id="num_3_star" value="3">
<input onclick="check(4)" type="radio" name="four" id="num_4_star" value="4">
<input onclick="check(5)" type="radio" name="five" id="num_5_star" value="5">
</form>

谢谢!

i最初必须是1,因为ids1开始

当点击启动时,还要重置所有checked状态!在getElementById 中使用i而不是stars

试试这个:

function check(stars) {
  for (var j = 1; j <= 5; j++) {
	document.getElementById("num_" + j + "_star").checked = false;
  }
  for (var i = 1; i <= stars; i++) {
    document.getElementById("num_" + i + "_star").checked = true;
  }
}
<input onclick="check(1)" type="radio" name="one" id="num_1_star" value="1">
<input onclick="check(2)" type="radio" name="two" id="num_2_star" value="2">
<input onclick="check(3)" type="radio" name="three" id="num_3_star" value="3">
<input onclick="check(4)" type="radio" name="four" id="num_4_star" value="4">
<input onclick="check(5)" type="radio" name="five" id="num_5_star" value="5">

var放在迭代变量i之前。您正在创建一个全局变量。