为什么dropdowns[i]
应该在此处分配给变量openDropdown
?但是,console.log()
和dropdowns[i]
的{{1}}相等。
openDropdown
如果它们相同,为什么这段代码不起作用?
window.onclick = function(event) {
if (!event.target.matches('.dropbtn')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
答案 0 :(得分:0)
这一行:
var openDropdown = dropdowns[i];
为现有值openDropdown
添加一个名称(dropdowns[i]
)。
它没有创建dropdowns[i]
值的副本。因此,在之后修改openDropdown时,您将触及通过名称openDropdowns
和dropdowns[i]
可以获得的值。
根据您的需要,您可能需要搜索javascript对象的浅或深副本。