-1

是否可以选中或取消选中页面上的一组复选框 a) 不循环,b) 不使用 jQuery 等 Javascript 框架?

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

我希望我的问题的答案可能是“不”,但如果有一些奇怪的、hacky 的方法(不奇怪也不 hacky 也很好!)那么我想知道。如果你愿意,可以称之为好奇心。

编辑:我想我真正要问的是一种在 O(1) (恒定时间)而不是 O(n) (相对于复选框数量的线性时间)中执行此操作的方法

4

4 回答 4

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>
于 2011-06-16T23:16:40.597 回答
1

您可以使用 map() 来执行此操作,它可能是也可能不是循环,具体取决于您对“循环”使用的定义有多严格:) 但实际上,它只是另一种投射循环的方式。我会说你的问题的答案是“不”。


编辑:

var checkboxes = getElement...
checkboxes.map(function(c) {
    c.checked = true;
});
于 2011-06-16T21:57:30.203 回答
1

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

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

于 2011-06-16T21:57:59.167 回答
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>

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

于 2011-06-16T22:04:10.147 回答