制作此剧本
function Resetradio() {
var radios = document.getElementsByName("tjek");
var i = 0;
while (i < radios.length) {
if (radios[i].checked)
selectedradio = i;
i++;
}
var i = 0;
while (i < radios.length) {
if (!selectedradio == i)
radios.checked = false
i++;
}
}
<form name="Form1" action="" method="get">
<input name="tjek" type="radio" value="" onclick="Resetradio()" />
<input name="tjek" type="radio" value="" onclick="Resetradio()" />
<input type="submit" value="Send" />
</form>
<form name="Form2" action="" method="get">
<input name="tjek" type="radio" value="" onclick="Resetradio()" />
<input name="tjek" type="radio" value="" onclick="Resetradio()" />
<input type="submit" value="Send" />
</form>
应该通过所有无线电并收集所选的一个,然后再次运行它们以取消选择所有其他无线电,如果有任何其他选择。故障在哪里?
答案 0 :(得分:1)
它不起作用,因为您可以选择多个按钮。因此selectedradio
将始终是所选按钮的最高索引。如果您尝试选择索引较低的按钮,则会在第二个循环中立即“重置”。想一想:
->
selectedradio === 3
->
selectedradio === 3
,因为radios[3].checked
仍为true
。因此,不是迭代按钮来找出选择了哪一个,只需将所选按钮的引用传递给函数:
function Resetradio(selected) {
var radios = document.getElementsByName("tjek");
var i = 0;
while (i < radios.length) {
if (radios[i] !== selected)
radios[i].checked = false
i++;
}
}
用
调用onchange="Resetradio(this)"