如何一次禁用网页上的所有复选框?

时间:2019-01-25 20:43:52

标签: javascript checkbox input

我在网页上有几组复选框。我想取消所有使用javascript的代码。现在,我通过查找每个集合的名称并使用FOR循环取消选中它们的方式来做到这一点...

    for (i=0;i<document.getElementsByName("myboxes").length;i++) {
document.getElementsByName("myboxes")[i].checked=false;}

for (i=0;i<document.getElementsByName("moreboxes").length;i++) {
document.getElementsByName("moreboxes")[i].checked=false;}

for (i=0;i<document.getElementsByName("evenmoreboxes").length;i++) {
document.getElementsByName("evenmoreboxes")[i].checked=false;}

我正在寻找一种将它们全部定位为一个循环的方法。我可以getElementsByTagName('input')以所有输入为目标,但这是一个问题,因为我不想取消选中某些无线电输入。有没有一种针对所有checkbox inputs的方法?


感谢您的建议。我只是想到了什么。我使用的每个NAME中都有单词“ boxes”,即myboxes,moreboxes,evenmoreboxes。是否可以将名称中的“框”一词作为目标,例如通配符,类似document.getElementsByName("*boxes")的方式,如果我在不想取消选中的位置添加了一组复选框,则可以用不同的名字命名。

4 个答案:

答案 0 :(得分:1)

您可以选中所有选中的复选框并重置其状态:

Entering new campaign: Show********************************
{:metrics=>"wins,win_rate,ctr,clicks_global", :timezone=>"UTC", :type=>"1", :method=>"getdata", :groupby=>"P1D", :dimensions=>"advertiser_name,campaign_name", :path=>"3.0/report/thirdpart"}
**** sending request *****
{:metrics=>"wins,win_rate,ctr,clicks_global", :timezone=>"UTC", :type=>"1", :method=>"getdata", :groupby=>"P1M", :dimensions=>"advertiser_name,campaign_name", :path=>"3.0/report/thirdpart"}
**** sending request *****
Campaign finished: ********************************



Entering new campaign: ********************************
{:metrics=>"wins,win_rate,ctr,clicks_global", :timezone=>"UTC", :type=>"1", :method=>"getdata", :groupby=>"P1D", :dimensions=>"advertiser_name,campaign_name", :path=>"3.0/report/thirdpart"}
**** sending request *****
{:metrics=>"wins,win_rate,ctr,clicks_global", :timezone=>"UTC", :type=>"1", :method=>"getdata", :groupby=>"P1M", :dimensions=>"advertiser_name,campaign_name", :path=>"3.0/report/thirdpart"}
**** sending request *****
Campaign finished: ********************************
function uncheckAll() {
  document.querySelectorAll('input[name$="boxes"]:checked')
    .forEach(checkbox => checkbox.checked = false);
}

答案 1 :(得分:0)

您可以使用document.querySelectorAll('input[type="checkbox"]');获取所有列表。然后运行循环

答案 2 :(得分:0)

我的建议是:

document.querySelectorAll("[name=myboxes], [name=moreboxes], [name=evenmoreboxes]").forEach((e) => echecked=false);

document.querySelectorAll("[name=myboxes], [name=moreboxes], [name=evenmoreboxes]").forEach((e) => e.checked=false);
<input type="checkbox" name="myboxes" value="1" checked>1<br>
<input type="checkbox" name="moreboxes" value="2" checked>2<br>
<input type="checkbox" name="evenmoreboxes" value="3" checked>3<br>

答案 3 :(得分:0)

如@imjared所建议,您可以使用querySelectorAll,但必须对其进行迭代:

querySelectorAll('input[type="checkbox"]').forEach(c => c.checked = false);

这里是doc for querySelectorAll