You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何JavaScript操作DOM时,不加[0]会返回undefined?

为什么不加[0]时会返回undefined?

嘿,我来帮你把这个问题掰扯明白~

核心原因其实很简单:document.getElementsByName()返回的不是单个DOM元素,而是一个HTMLCollection(类数组的集合对象),哪怕页面里只有一个匹配name属性的元素,它也会被放进这个集合里,而不是直接返回元素本身。

咱们对比看你的两段代码:

第一段代码(正常工作的版本)

var d = document.getElementsByName('msg')[0]
document.write(`<br> ${d.innerText}`)
<div id="msg" name="msg">click here</div>

这里的[0]是从HTMLCollection集合里取出了第一个(也是唯一一个)元素,这时候变量d就指向了页面里那个<div>元素,自然能正常访问它的innerText属性,所以输出的是click here。

第二段代码(返回undefined的版本)

var d = document.getElementsByName('msg')
document.write(`<br> ${d.innerText}`)
<div id="msg" name="msg">click here</div>

这里的d是整个HTMLCollection集合对象,而这个集合对象本身并没有innerText这个属性,所以当你尝试访问d.innerText时,就会得到undefined。

额外补充

如果页面里有多个name为msg的元素,这个集合里就会包含所有匹配的元素,你需要通过对应的索引(比如[0]、[1])来访问具体的元素。另外,你也可以用item(index)方法来取元素,比如document.getElementsByName('msg').item(0),和[0]的效果是一样的。

内容的提问来源于stack exchange,提问作者MarkosComK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:06:52