52

我有一个循环在同一页面中创建 20 个复选框(它创建不同的表单)。我希望通过chrome 开发人员工具运行 JavaScript,而不使用任何同时检查所有复选框的库。

据我所知:

function() {
    var aa= document.getElementsByTagName("input");
    for (var i =0; i < aa.length; i++){
     aa.elements[i].checked = checked;
    }
}

PS:我在 Stack-Overflow 中搜索并发现了很多问题,但没有一个对我有用,如果有人能找到我的正确答案,我会很高兴。

4

8 回答 8

112
(function() {
    var aa= document.getElementsByTagName("input");
    for (var i =0; i < aa.length; i++){
        if (aa[i].type == 'checkbox')
            aa[i].checked = true;
    }
})()

使用最新的浏览器可以使用document.querySelectorAll

(function() {
    var aa = document.querySelectorAll("input[type=checkbox]");
    for (var i = 0; i < aa.length; i++){
        aa[i].checked = true;
    }
})()
于 2013-01-09T20:27:52.430 回答
17

在控制台开发工具 (F12) 中,您可以像在 javascript 或 jQuery 代码中一样使用查询选择器。

'$$' - 表示选择所有项目。如果您使用 '$' 代替,您将只获得第一项。

因此,为了选择所有复选框,您可以执行以下操作

$$('input').map(i => i.checked = true)

或者

$$('input[type="checkbox"').map(i => i.checked = true)

于 2017-04-18T21:00:25.183 回答
6

要稍微修改已接受的答案,如果您尝试选中某些服务(例如 Loom.com)上的所有复选框,那么您需要单击每个复选框,而不是将它们设置为“已选中”状态,否则功能无法按预期工作。

这是执行此操作的代码:

(function() {
    var aa = document.querySelectorAll("input[type=checkbox]");
    for (var i = 0; i < aa.length; i++){
        aa[i].click();
    }
})()

请注意,较长的复选框列表将导致页面暂时暂停,因为所有复选框都会自动为您单击。

于 2020-08-03T16:23:01.883 回答
3

你几乎是正确的。只需使用

aa[i].checked = "checked";

循环内。

即,您需要确保:

  1. "checked"是一个字符串,而不是一个变量标识符,并且
  2. 你直接索引aa,不aa.elements,不存在
于 2013-01-09T20:25:10.097 回答
2

如果您来这里是为了快速单线:

var aa = document.getElementsByTagName("input"); for (var i = 0; i < aa.length; i++) aa[i].checked = true;
于 2014-09-03T16:28:08.560 回答
1

用于切换(选中/取消选中)所有复选框的 Javascript 函数。

function checkAll(bx)
{
 var cbs = document.getElementsByTagName('input');
 for(var i=0; i < cbs.length; i++)
 {
    if(cbs[i].type == 'checkbox')
    {
        cbs[i].checked = bx.checked;
     }
 }
}

如果您想从开发人员工具中获取它,请删除函数参数并将值设置为“true”“false”而不是“bx.checked”

于 2013-10-01T14:46:14.350 回答
1

尝试这个 :)

(function () {
    var checkboxes = document.querySelectorAll('input[type=checkbox]');

    //convert nodelist to array
    checkboxes = Array.prototype.slice.call(checkboxes);
    checkboxes.forEach(function (checkbox) {
        console.log(checkbox);
        checkbox.setAttribute('checked', true);
    });

})()

http://jsfiddle.net/YxUHw/

于 2013-01-09T20:36:10.607 回答
0

试试setAttribute

(function() {
  var aa = document.getElementsByTagName("input");
  for (var i =0; i < aa.length; i++){
    aa.elements[i].setAttribute('checked', 'checked');
  }
})();

编辑:添加括号以立即执行该功能。

于 2013-01-09T20:25:57.750 回答