【问题标题】:HTMLCollection confusionHTMLCollection 混乱
【发布时间】:2015-10-25 22:14:24
【问题描述】:

如果我打电话给document.getElementsByClassName('cl'),我会得到一个 HTMLCollection。它似乎包含 Element 对象而不是 HTMLElement 对象,请参阅 Flow sourceMozilla doc 引用它包含不是 HTMLElements 的元素。 W3C specification 写道 HTMLCollection 是一个历史产物,尽管我似乎找不到任何建议的替代方案(什么是“元素”?)。

那么我应该检查返回的对象是否确实是 HTMLElement 吗?还有什么可能是什么时候?或者有没有更好的方法来做getElementsByClassName 和类似方法的工作? (不使用外部库)

提前致谢!

【问题讨论】:

  • XML 元素是我的猜测。并非所有内容都不再是 html,因此在某些时候删除名称是有意义的。
  • 是的,我知道,但 HTMLDocument 仍然只能包含 HTMLElements。
  • 但在实践中它们是什么以及它们的实现可能是其他更通用和可重用的子类。

标签: javascript dom


【解决方案1】:

DOM 不是 HTML 独有的。 DOM 规范也支持 XML 和 SVG(XML 的一种形式)。 Element 是映射到任何类型的单个元素的通用对象。

另外,替代方法是由querySelectorAll() 返回的NodeList

【讨论】:

  • 太好了,querySelector() and querySelectorAll() 正是我想要的,谢谢!
  • querySelector 函数需要一个有效的选择器字符串,因此请记住参数不同于更具体的 getElement 函数
猜你喜欢
  • 2012-02-06
  • 2010-12-04
  • 2011-05-05
  • 2018-05-30
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多