Javascript getElementById vs getElementByClassName
我同时使用了Javascript getElementById vs getElementByClassName,javascript,html,vue.js,Javascript,Html,Vue.js,我同时使用了getElementById和getElementByClassNamegetElementById有时返回null,而getElementByClassName每次都能正常工作。这可能是什么原因?我知道getElementbyClassName返回一个列表,这是否意味着其中的列表是空的,而不是父itelf <span v-for="(item, ind) in cues" :key="ind" :class="item.activeclass"
getElementById
和getElementByClassName
getElementById
有时返回null
,而getElementByClassName
每次都能正常工作。这可能是什么原因?我知道getElementbyClassName
返回一个列表,这是否意味着其中的列表是空的,而不是父itelf
<span
v-for="(item, ind) in cues"
:key="ind"
:class="item.activeclass"
:id="item.activeclass"
>{{ item.text }}</span>
{{item.text}
有时,id
作为[object HTMLSpanElement]
正确返回,有时为null
。
而类
总是返回[object HTMLCollection]
另外,我尝试在
滚动视图中使用id
,当它不是null
时,它可以正常工作。是否有方法使用滚动视图中的类
?如果页面上存在该类,则不应返回null。你可能找不到正确的id
根据您的代码,看起来您可能有多个相同的id。这不是有效的HTML,而且某些JavaScript实现可能需要唯一的id,因此您还应该确保页面上的所有id都是唯一的
对于scrollIntoView,您只需从按类查找时检索到的元素中获取id,然后检索scrollIntoView(spanElement.id)
getElementsByClassName返回与类名标准匹配的所有元素的列表
如果不存在任何元素,则结果将是一个空列表
getElementById返回与指定“id”匹配的第一个元素。
如果不存在任何元素,则结果将为“null”。“这是否意味着其中的列表为空”…可能。显然,由于我们无法看到您的特定代码,或者在运行代码时无法看到DOM中实际存在哪些对象,所以很难判断。但是yes getElementByClassName永远不会返回null,如果没有匹配项,您将得到一个空列表。元素与活动HTML集合。。。。这意味着您在元素出现在页面上之前就引用了它们。不存在getElementByClassName
之类的情况,我认为您遇到了竞争条件:您可能必须等待下一个勾号,然后才能尝试检索DOM节点getElementById
只返回单个节点,因此它将始终为null或找到的元素。另一方面,getElementsByClassName
总是返回一个集合,但是如果您检查它,该集合有时可能是空的。