Javascript 什么';for/in语句与常规for语句的区别是什么它们不一样

Javascript 什么';for/in语句与常规for语句的区别是什么它们不一样,javascript,foreach,for-in-loop,Javascript,Foreach,For In Loop,在我上面链接的页面上,左侧有一个侧边栏 有一些下拉列表,要求用户单击其中的每个列表才能看到子列表 我试图编写一个代码,这样它就可以点击所有可切换列表来取消隐藏子列表 在父元素上使用click()什么都不做,我尝试了父元素的所有子元素和子元素,发现这是可行的: x=document.querySelectorAll(".toggle").children[0].children[1]; 所以我试着写了一个对所有孩子都执行click()的代码,我写了这个,它成功了: x=document.quer

在我上面链接的页面上,左侧有一个侧边栏

有一些下拉列表,要求用户单击其中的每个列表才能看到子列表

我试图编写一个代码,这样它就可以点击所有可切换列表来取消隐藏子列表

在父元素上使用
click()
什么都不做,我尝试了父元素的所有子元素和子元素,发现这是可行的:

x=document.querySelectorAll(".toggle").children[0].children[1];
所以我试着写了一个对所有孩子都执行
click()
的代码,我写了这个,它成功了:

x=document.querySelectorAll(".toggle");
for(i=0;i<x.length;i++){
    x[i].click();
    y=x[i].children;
    for (j=0;j<y.length;j++){
        y[j].click();
        z=y[j].children;
        for(k=0;k<z.length;k++){
            z[k].click();
        }
    }
}
uncaughttypeerror:y.forEach不是函数
一点(:7:4)
在NodeList.forEach()处
时间:3:3

正如您使用children属性所了解的,事件侦听器处于
li.toggle>details>summary
,因此您必须触发对该元素的单击。最简单的方法是:

var x = document.querySelectorAll('li.toggle details summary');
for(var i=0; i < x.length; i++) {
    x[i].click();
}
参考这个。

您不应该在html集合中使用。此外,仅在第一个函数中,您就试图在长度为1的html集合上运行forEach,而不是在您获取的每个项目上运行forEach

如果您想使用for-of而不是常规的for循环,只需调整frzsombor的编写方式:

var x = document.querySelectorAll('li.toggle details summary');
for(let element of x) {
    element.click();
}

循环用于迭代对象的属性。要迭代数组中的项,请使用循环。但是,它们是类似于数组的,而不是实际的数组,并且不能被完全相同地对待。要创建一个
节点列表的数组,请使用。我之前也尝试过,但没有成功。我将尝试
数组。从
右侧开始,
for…of
对数组和iterables起作用,但是
节点列表
两者都不起作用——您需要将其作为
for(const someNode of Array.from(myNodeList)){…doStuff…}
编写。
x=document.querySelectorAll(".toggle");
var y; var z;
x.forEach(i);
function i(item, index){
    item.click();
    y=item.children;
    y.forEach(j);
}
function j(item,index){
    item.click();
    z=item.children;
    z.forEach(k);
}
function k(item,index){
    item.click();
}
Uncaught TypeError: y.forEach is not a function
at i (<anonymous>:7:4)
at NodeList.forEach (<anonymous>)
at <anonymous>:3:3
var x = document.querySelectorAll('li.toggle details summary');
for(var i=0; i < x.length; i++) {
    x[i].click();
}
var x = document.querySelectorAll('li.toggle details[open] summary');
for(var i=0; i < x.length; i++) {
    x[i].click();
}
var x = document.querySelectorAll('li.toggle details summary');
for(let element of x) {
    element.click();
}