在Javascript中将类附加到现有的选定类(selected class语句有多个选定类)

在Javascript中将类附加到现有的选定类(selected class语句有多个选定类),javascript,html,Javascript,Html,我用一条语句选择了多个类: var sidebarList=document.getElementsByClassName(“侧导航导航链接导航项目”); 我正在尝试向其中添加一个名为open的类: sidebarList.classList.add(“打开”); 但是我得到这个错误无法读取未定义的属性'add',我不明白为什么 这是我尝试做的jquery等价物 var侧边栏列表=$(“.side nav ul li”); sidebarList.addClass(“打开”); 必须使用多个

我用一条语句选择了多个类:

var sidebarList=document.getElementsByClassName(“侧导航导航链接导航项目”);
我正在尝试向其中添加一个名为
open
的类:

sidebarList.classList.add(“打开”);
但是我得到这个错误
无法读取未定义的属性'add',我不明白为什么

这是我尝试做的jquery等价物

var侧边栏列表=$(“.side nav ul li”);
sidebarList.addClass(“打开”);
必须使用多个类名作为选择器来选择元素。之后,您必须循环选择的元素,并将类添加到每个元素中

var-sidebarList=document.queryselectoral(“.side-nav.nav-links.nav-item”);
forEach(函数(oItem){
oItem.classList.add(“打开”);
log(“将类“open”添加到列表项”);
});
    测试 测试 测试
document.getElementsByClassName()的结果是一个HTML集合。 所以你需要把它从一个HTMLCollection转换成一个数组。然后我们就可以绘制地图了

var arrayOfSectionDividers = Array.from(document.getElementsByClassName("side-nav"))
arrayOfSectionDividers.map(element => element.classList.add("hidden"))

<ul>
<li class="side-nav nav-links nav-item" >Test</li>
<li class="side-nav nav-links nav-item" >Test</li>
<li class="side-nav nav-links nav-item" >Test</li>
</ul>
var arrayOfSectionDividers=Array.from(document.getElementsByClassName(“侧导航”))
arrayOfSectionDividers.map(element=>element.classList.add(“hidden”))
    测试 测试 测试
或者,如果您愿意:

var matches = document.getElementsByClassName('side-nav');

for (var i=0; i<matches.length; i++) {
  matches[i].classList.add('hidden');
}
var matches=document.getElementsByClassName('side-nav');

对于(var i=0;这不是一个映射任务。当一个很容易使用<代码> QueRealStudioWAL/<代码>返回的节点列表时,不需要将HTML集合转换成JS数组。请考虑编辑或删除您的答案。谢谢。请使用数组的<代码>前缀< /代码>而不是<代码>。映射
,因为没有任何东西需要映射(
元素.classList.add(“hidden”)
的返回值是
未定义的
)。Peter如果您测试它不是未定义的,我的论点是不应该使用
映射
(1)没有理由创建新数组(使用
映射
)因为要为
-
每个
元素的类列表添加一个新值。(2)使用
映射
将返回一个只填充了未定义值的数组,因为类列表的
添加
方法的返回值是
未定义
。希望这能帮助您编辑答案。