【发布时间】:2026-02-21 00:30:01
【问题描述】:
我有一个 forEach 方法,它为数组中的每个元素返回一个 console.log()。
如果我在其中放置模板文字,我会在控制台中打印:
[object HTMLLIElement] 而不是正确评估对象"<li class="sel">..."
const container = document.querySelector("#start");
let sel = container.querySelectorAll(".sel");
//The following works as it should:
// sel.forEach((element, pos) => console.log( element,pos));
//This , however does not
sel.forEach((element, pos) => console.log( ` ${element} + ${pos} `)); //and prints " [object HTMLLIElement] + 0 "
<div id="start">
<ul>
<li class="sel">valoare 1</li>
<li class="sel">valoare 2</li>
<li class="sel">valoare 3</li>
<li>valoare 4</li>
<li class="sel">valoare 5</li>
</ul>
</div>
【问题讨论】:
-
console.log(在浏览器中),特别对待 HTMLElements 并为它们提供交互式菜单。通过将它们转换为带有模板文字的字符串,您将失去这种能力。如果你也想记录位置,你可以试试console.log(element, "+", pos)。 -
“而不是正确评估对象”是什么意思?您正在对一个对象执行 toString()。
-
我在修改问题的编辑时遇到了麻烦,因为在我尝试提交更改时其他人也更正了它 - 我说控制台中出现的正确评估“
- ..." (当我运行有效的代码时 sel.forEach((element, pos) => console.log( element,pos));
-
我不认为我或@iota 的回答是精英主义的。我想我已经整理了一个非常全面的答案以及相关资源的链接,以便您充分了解正在发生的事情以及如何获得您想要的。
-
(让我烦恼的是,在注意到问题的制定方式存在一些错误之后,我还没有完成对问题的修改,并且在我设法提交修改之前立即投下了反对票)
标签: javascript arrays dom foreach