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

发布于 2024-11-15 23:39:33 字数 378 浏览 2 评论 0原文

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

这个问题相关,但与(取消)选中所有复选框有关在带有 jQ​​uery 的页面上。

我预计我的问题的答案可能是“不”,但如果有一些奇怪的、黑客的方式来做这件事(不奇怪也不黑客也很好!)那么我想知道。如果你愿意的话,可以称之为好奇心。

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

Is it possible to check or uncheck a set of checkboxes on a page a) without looping, and b) without using a Javascript framework such a jQuery?

This question is related but is about (un)checking all the checkboxes on a page with jQuery.

I expect the answer to my question will probably be "no", but if there's some weird, hacky way of doing it (not weird and not hacky is good too!) then I would like to know. Call it curiosity if you will.

Edit: I suppose what I'm really asking is for a way to do it in O(1) (constant time) rather than O(n) (linear time with respect to the number of checkboxes)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

祁梦 2024-11-22 23:39:33

如果按钮位于表单中,并且未选中默认状态并且您不介意重置表单中的所有其他控件,则可以使用重置按钮。否则,无论使用 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>

If the buttons are in a form, you can use a reset button if the default state is unchecked and you don't mind resetting all the other controls in the form. Otherwise, you have to use a loop regardless of whether you use POJS or a "framework".

Look ma, no script!

<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>
零度° 2024-11-22 23:39:33

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

这满足标准“a”(无循环)和标准 b(无框架)

One way you can go about checking or unchecking a set of checkboxes on a page is to reference each one individually.

This meets both criteria "a" (no looping) and criteria b (no framework)

一身仙ぐ女味 2024-11-22 23:39:33

您可以使用 map() 来完成此操作,它可能是也可能不是循环,具体取决于您对“循环”使用的定义的严格程度:)但从所有实际角度来看,这只是转换循环的另一种方式。我想说你的问题的答案是“不”。


EDIT:

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

You could do it with map(), which may or may not be a loop, depending on how strict of a definition you use for "loop" :) But in all practical terms, it's just another way of casting a loop. I'd say the answer to your question is "no."


EDIT:

var checkboxes = getElement...
checkboxes.map(function(c) {
    c.checked = true;
});
还如梦归 2024-11-22 23:39:33

您可以修改/覆盖完整的 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>

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

You may modify/override the full HTML code:

<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>

no Loop, no Framework, just a little bit unesthetic..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文