Javascript 我可以直接更新所有元素的属性吗

Javascript 我可以直接更新所有元素的属性吗,javascript,Javascript,例如: var inputs = document.querySelectorAll('input[type="checkbox"]'); 我想在所有输入中将选中的设置为true。这可以像在jQuery中那样,不使用for循环吗?使用纯JavaScript,您可以使用以下函数: var checkboxes = document.querySelectorAll('input[type="checkbox"]'); for(var i=0; i<checkboxes.length; i

例如:

var inputs = document.querySelectorAll('input[type="checkbox"]');

我想在所有输入中将选中的
设置为true。这可以像在jQuery中那样,不使用for循环吗?

使用纯JavaScript,您可以使用以下函数:

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

for(var i=0; i<checkboxes.length; i++) {  checkboxes[i].checked = true; }
这应该与任何复选框输入挂钩,并使用jQuery
attr()
函数将其属性设置为checked

如果这不起作用,请尝试为您的复选框指定自己的类名,如checkbox,并尝试如下操作:

$('.checkbox').attr('checked', 'checked')

这将有助于解决兼容性问题并避免循环,但如果您不想走jQuery路线,请忽略。

不,如果没有对节点进行某种形式的迭代,这是无法做到的。jQuery也会迭代节点,它只是对用户隐藏它

最接近类似jQuery的样式是在支持它的浏览器中使用:

[].forEach.call(inputs, function() {
    this.checked = true;
});
不使用for循环

在某个时候,你需要某种形式的循环。你只是想把它抽象出来吗

NodeList
s与
Array
-like类似,因此您可以从
Array.prototype
,包括like。例如:

不扩展DOM的另一种方法:

var forEach = Array.prototype.forEach;

var links = document.getElementsByTagName('a');
forEach.call(links, function(link){ // works in most browsers (please document here if you find browsers where it doesn't)
  link.style.color = '#0F0';
});

但请注意,即使是
forEach()
在本例中为while

querySelectorAll
也会返回一个。您需要迭代列表以更改其中的每个项(jQuery也在后台使用.each在整个集合上循环)

您可以使用循环(for、while等),也可以在
Array
原型上使用
forEach
方法


我不想使用jQuery,因为这将是我在页面中唯一的javascript…抱歉!我看错了这个问题,我读到了这个可以在jQuery中完成而不是在jQuery中“像”。。。道歉。希望这对其他人有用,而我很快就会回来给出实际的答案!当问题指定querySelectorAll时,您推荐getElementsByClassName的背后是什么想法?
var forEach = Array.prototype.forEach;

var links = document.getElementsByTagName('a');
forEach.call(links, function(link){ // works in most browsers (please document here if you find browsers where it doesn't)
  link.style.color = '#0F0';
});