【发布时间】:2012-11-22 23:44:46
【问题描述】:
编辑:联系了教授;我不是实际上 [supposed] 在此作业中使用 jQuery,因为表单上的操作(例如教授的网站)不允许这样做。 Tyvm 致所有回复如此迅速和乐于助人的人。因此,我对纯原生的 JS 解决方案很感兴趣,以解决这些困难:
根据用户在面向 DOM 的表单中单击“是”还是“否”单选按钮,获取一组复选框来切换“打开或关闭”。这是(I:单选按钮,II:复选框)的 HTML:
I:) 单选按钮
<label> Subscribe to our Mailing List? </label>
<input type="radio" name="raydeo" id="rad1" value="Yes" onclick="subscribe()"></input>
<label>Yes</label>
<input type="radio" name="raydeo" id="rad2" value="No" onclick="subscribe()"></input>
<label>No</label>
II.) 复选框
<fieldset>
<legend>Mailing List Subscriptions</legend>
<br />
<input type="checkbox" name="mailinglist" value="Corporate Press Release Emails" id="cor"></input><label> Corporate Press Release Emails</label>
<br />
<input type="checkbox" name="mailinglist" value="Upgrade Software Advertising List" id="sof"></input><label> Upgrade Software Advertising List</label>
<br />
<input type="checkbox" name="mailinglist" value="List given to spammers after buyout" id="lspa"></input><label> List given to spammers after buyout</label>
<br />
<input type="checkbox" name="mailinglist" value="The only non-cynical list" id="cyn"></input><label> The only non-cynical list</label>
<br />
<input type="checkbox" name="mailinglist" value="List to sell to spammers" id="tos"></input><label> List to sell to spammers</label>
<br />
<input type="checkbox" name="mailinglist" value="Spam List" id="spal"></input><label> Spam List</label>
<br />
</fieldset>
使用 Populating Checkboxes Based on Radio Button Click 等帖子中提供的基本原理,它仍然使用 jQuery,迄今为止我所做的最佳尝试是:
<script>
function subscribe(){
//var yesPlease = document.getElementById("rad1");
//var noThx = document.getElementById("rad2");
var arr = new Array["cor", "sof", "lspa", "cyn", "tos", "spal"];
//var hold = document.getElementById(arr[i]);
//if(hold.getAttribute(arr[i]).checked = true && arr[i] >= 1){
//document.getElementById("cor").innerHTML=hold.getAttribute("checked");
var hold = document.getElementsByName("mailinglist")[0];
for(var i = 0; i < arr.length; i++)
{
if(document.getElementById("rad1").checked==true)
{
hold.getAttribute(arr[i]).checked == true;
}
else if(document.getElementById("rad2").checked==true)
{
hold.getAttribute(arr[i]).checked == false;
}
}
}
</script>
当我加载我的文档并单击其中一个时,什么都没有发生。如果有帮助,这里是有关部分的屏幕截图:谢谢:
【问题讨论】:
-
仅使用 (yesPlease.checked) 而不是 (yesPlease.checked == true),因为单选按钮是 check return boolean。
-
不是问题,但
$('input[type="checkbox"][name="mailinglist"]').prop("checked", true);会在一行中完成所有复选框...
标签: javascript html checkbox radio-button