我是Javascript的初学者,我很难理解它的一些功能。我无法弄清楚For循环在我的代码中的表现如何:
我有两个HTML段落,我想附加一个click
侦听器,使用For循环将其颜色更改为红色。
var paragraphs = document.querySelectorAll('p')
for (var i = 0; i < paragraphs.length; i++) {
p = paragraphs[i]
p.addEventListener('click', function(e) {
p.classList.toggle('red')
})
}
此处,当我点击其中任何一段时,只有最后一段变为红色。
有人给了我一个我根本不懂的解决方案:
var paragraphs = document.querySelectorAll('p')
for (var i = 0; i < paragraphs.length; i++) {
(function(p) {
p.addEventListener('click', function(e) {
p.classList.toggle('red')
})
})(paragraphs[i])
}
这是有效的,但我不知道这段代码中发生了什么。
有人可以通过告诉我为什么我的第一个代码不起作用(即使看起来是正确的)来帮助我,并解释一下第二个代码中发生了什么。谢谢!