选中/取消选中所有复选框,无需循环且没有框架

时间:2011-06-16 21:52:17

标签: javascript checkbox no-framework

是否可以在没有循环的情况下检查或取消选中页面上的一组复选框;和b)不使用Javascript框架这样的jQuery?

question是相关的,但是关于(取消)使用jQuery检查页面上的所有复选框。

我希望我的问题的答案可能是“不”,但如果有一些奇怪的,黑客的做法(不奇怪而不是hacky也是好的!)然后我想知道。如果你愿意,可以称之为好奇心。

编辑:我想我真正想要的是在O(1)(常数时间)而不是O(n)(相对于复选框数量的线性时间)中实现它的方法

4 个答案:

答案 0 :(得分:2)

如果按钮位于表单中,则可以使用重置按钮,如果未选中默认状态,并且您不介意重置表单中的所有其他控件。否则,无论是使用POJS还是“框架”,都必须使用循环。

看看马,没有脚本!

<form action="#">
  <div>
    <input type="checkbox" name="cb0">
    <input type="checkbox" name="cb1">
    <input type="checkbox" name="cb2">
    <input type="checkbox" name="cb3">
    <br>
    <input type="reset" value="Uncheck all">
  </div>
</form>

答案 1 :(得分:1)

你可以使用map(),它可能是也可能不是循环,这取决于你用于“循环”的定义的严格程度:)但是在所有实际术语中,它只是另一种构建循环的方式。我会说你问题的答案是“不”。

<小时/> 修改:

var checkboxes = getElement...
checkboxes.map(function(c) {
    c.checked = true;
});

答案 2 :(得分:1)

在页面上检查或取消选中一组复选框的一种方法是单独引用每个复选框。

这符合标准“a”(无循环)和标准b(无框架)

答案 3 :(得分:0)

您可以修改/覆盖完整的HTML代码:

<div id="checkBoxes">
<input name="foo" type="checkbox" value="1" />
<input name="bar" type="checkbox" value="1" />
<input name="baz" type="checkbox" value="1" />
</div>

<script type="text/javascript">
function checkAll(){
    document.getElementById("checkBoxes").innerHTML = 
         '<input name="foo" type="checkbox" value="1" checked="checked" />'
        +'<input name="bar" type="checkbox" value="1" checked="checked" />'
        +'<input name="baz" type="checkbox" value="1" checked="checked" />';
}
function uncheckAll(){
    document.getElementById("checkBoxes").innerHTML = 
         '<input name="foo" type="checkbox" value="1" />'
        +'<input name="bar" type="checkbox" value="1" />'
        +'<input name="baz" type="checkbox" value="1" />';
}
</script>

没有循环,没有框架,只是有点不明......