我正在尝试创建一个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>
谢谢!
答案 0 :(得分:2)
开始
i
最初必须 1 ,因为ids
从 1启动点击后,还会重置所有
中使用checked
状态!在i
stars
代替getElementById
试试这个:
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">
答案 1 :(得分:1)
将var
放在迭代变量i
之前。您正在创建一个全局变量。