Javascript 为什么querySelectorAll()和getElementsByTagName()不起作用?

Javascript 为什么querySelectorAll()和getElementsByTagName()不起作用?,javascript,Javascript,我试图选择HTML页面中的所有元素,然后为每个元素添加一个类。然后运行一个函数,从每个元素中删除相同的类 我已尝试使用querySelectorAll()执行此操作: 并使用getElementsByTagName(): 但两者都不起作用。我已经用jQuery解决了这个问题,所以不需要回答这个问题。我只是想比较一下JavaScript和jQuery在这种情况下的性能,并在此过程中学习更多的普通JavaScript 我也尝试过这样删除该类: document.querySelectorAll("a

我试图选择HTML页面中的所有
元素,然后为每个元素添加一个类。然后运行一个函数,从每个
元素中删除相同的类

我已尝试使用querySelectorAll()执行此操作:

并使用getElementsByTagName():

但两者都不起作用。我已经用jQuery解决了这个问题,所以不需要回答这个问题。我只是想比较一下JavaScript和jQuery在这种情况下的性能,并在此过程中学习更多的普通JavaScript

我也尝试过这样删除该类:

document.querySelectorAll("a").className =
  document.querySelectorAll("a").className.replace
    ( /(?:^|\s)class1(?!\S)/g , '' ) 
以及:


但这两种方法都不管用。任何帮助都将不胜感激。

返回列表。您需要迭代列表元素

文档。querySelectorAll
返回一个列表,因此需要循环遍历它。例如:

var links = document.querySelectorAll('a');
for(var i = 0; i < links.length; i++){
    links[i].className = 'class1';
}
var links=document.querySelectorAll('a');
对于(变量i=0;i
他们都返回了列表,使用一个简单的循环非常感谢大家!
document.querySelectorAll("a").className =
  document.querySelectorAll("a").className.replace
    ( /(?:^|\s)class1(?!\S)/g , '' ) 
document.getElementsByTagName("a").className =
 document.getElementsByTagName("a").className.replace
  ( /(?:^|\s)class1(?!\S)/g , '' );
var links = document.querySelectorAll('a');
for(var i = 0; i < links.length; i++){
    links[i].className = 'class1';
}