Javascript和DOM问题

Javascript和DOM问题,javascript,dom,Javascript,Dom,我在使用香草Javascript和DOM时遇到问题。在我的html代码中,我有一些p元素和一些h2元素。我正试图用javascript将它们作为目标,只是为了训练DOM的使用。以下是我的Javascript代码: var allP = document.querySelectorAll("p"); var h = document.querySelectorAll("h2"); for ( i=0; i <= allP.length; i++){ allP[i].classLis

我在使用香草Javascript和DOM时遇到问题。在我的html代码中,我有一些p元素和一些h2元素。我正试图用javascript将它们作为目标,只是为了训练DOM的使用。以下是我的Javascript代码:

var allP = document.querySelectorAll("p");
var h = document.querySelectorAll("h2");

for ( i=0; i <= allP.length; i++){
    allP[i].classList.add("hello"), allP[i].style.color = "red";
};

for (i=0; i<=h.length; i++){
    h[i].style.color = "orange";
}
var allP=document.querySelectorAll(“p”);
var h=document.queryselectoral(“h2”);

对于(i=0;i尝试在第二个循环中使用另一个变量,例如
j

var allP = document.querySelectorAll("p");
var h = document.querySelectorAll("h2");

for (var i=0; i <= allP.length; i++){
    allP[i].classList.add("hello"), allP[i].style.color = "red";
};

for (var j=0; j<=h.length; j++){
    h[j].style.color = "orange";
}
var allP=document.querySelectorAll(“p”);
var h=document.queryselectoral(“h2”);

对于(var i=0;i尝试在第二个循环中使用另一个变量,例如
j

var allP = document.querySelectorAll("p");
var h = document.querySelectorAll("h2");

for (var i=0; i <= allP.length; i++){
    allP[i].classList.add("hello"), allP[i].style.color = "red";
};

for (var j=0; j<=h.length; j++){
    h[j].style.color = "orange";
}
var allP=document.querySelectorAll(“p”);
var h=document.queryselectoral(“h2”);

对于(var i=0;i在循环长度中更改
i
以避免错误。例如,循环的长度可以是3,因此循环将针对元素
allP[0]
allP[1]
allP[2]

var allP=document.querySelectorAll(“p”);
var h=document.queryselectoral(“h2”);
var i;
对于(i=0;i
p1

p2

p3

h2a h2b h2c
h2d
更改循环长度中的
i
以避免错误。例如,循环的长度可以是3,因此循环将针对元素
allP[0]
allP[1]
allP[2]

var allP=document.querySelectorAll(“p”);
var h=document.queryselectoral(“h2”);
var i;
对于(i=0;i
p1

p2

p3

h2a h2b h2c


h2d
正如其他人所指出的,您有一个范围问题。您仍然可以对两个循环使用i,只需使用var声明它,这样它就不具有全局范围。正如其他人所指出的,
i也有一个范围问题。您仍然可以对两个循环使用i,只需使用var声明它,这样它就不具有全局范围。还有因此,
i的一个问题是第一个循环中出现错误,所以第二个循环永远不会执行。您需要更改
i问题是第一个循环中出现错误,所以第二个循环永远不会执行。您需要更改
i您正在使用一个具有全局范围的
i
变量,启动ch为第二个循环更改字母作为测试。另外,我建议使用分号而不是逗号作为语句分隔符,并且您不希望使用
您的第一个循环包含逗号(,),而它应该包含分号(;)相反。您在同一行上有两个独立的语句,因此需要终止第一个语句。逗号不起作用,分号起作用。此外,您应该从i=0开始,直到使用具有全局作用域的
i
变量,开始更改第二个循环的字母作为测试。我还建议使用分号,而不是逗号作为语句分隔符,您不想使用
您的第一个循环包含逗号(,),而它应该包含分号(;)相反,在同一行中有两个独立的语句,因此需要终止第一个语句。逗号不起作用,分号起作用。此外,前面的var应该从i=0上升到iOr,并且@mplungjan中还有一个错误,它不一样。这里的
i
j
都被提升到与
allP
h
的范围相同,因此您将(错误地)重新声明
i
。当你有嵌套循环时,使用不同的变量是很重要的。我不认为当循环不重叠时会有什么不同。从来没有打扰过我的JS解释器没有:-循环没有嵌套为@Barmar Saidyo,你可以在JS中重新声明变量,但是。或者前面的变量也是一样,还有一个错误r在@mplungjan中是不一样的。这里的
i
j
都被提升到了与
allP
h
相同的范围,所以你是(错误的)重新声明
i
。当你有嵌套循环时,使用不同的变量是很重要的。我不认为当循环不重叠时会有什么不同。从来没有打扰过我的JS解释器没有:-循环没有嵌套为@Barmar Saidy你可以在JS中重新声明变量,但是。为什么他需要不同的变量?循环没有重叠ing和他重新设置了它们之间的i右,编辑过,无论如何,我认为这是避免副作用的一个很好的做法。这个
i@mplungjan你能解释一下你的评论吗?@NoName84请查看更新的答案,因为当逗号改为分号时,
i
被声明为
var i
为什么他需要不同的变量吗?循环没有重叠,他重置了循环之间的i。对,经过编辑,无论如何,我认为这是一个避免副作用的好做法。这个
i@mplungjan,你能解释一下你的评论吗?@NoName84请查看更新的答案,因为现在逗号改为分号和e
i
被声明为
var i
第二个
var
是不需要的,因为第二个循环与第一个循环在同一范围内。循环不重叠,这不是范围问题。第二个
var
是不需要的,因为第二个循环与第一个循环在同一范围内。循环不重叠,不是一个循环应对问题。为了让每个人都开心,在第一个循环之前定义
var i;
),或者在第一个循环中,正如我所添加的那样。我会一直拥有它们,因为有一天我会决定将第二个循环移到另一个范围,然后我又是全局的,为了让每个人开心,在第一个循环之前定义
var i;
)或者在第一个循环中,正如我所添加的
for (var i=0; i < allP.length; i++){
    allP[i].classList.add("hello");
    allP[i].style.color = "red";
};

for (i=0; i < h.length; i++){
    h[i].style.color = "orange";
}