为何getElementsByTagName返回HTMLCollection而非直接元素?如何简化显示?
为什么
document.getElementsByTagName("h1")返回HTMLCollection,怎么获取简化视图? 嘿,刚入门JS的时候我也踩过这个坑,太懂你的疑惑了!咱们一步步来拆解:
原因分析
document.getElementsByTagName()这个方法的设计就是返回HTMLCollection——一个类数组的元素集合,哪怕你的页面里只有1个<h1>标签,它也会把这个元素放进集合里返回,而不是直接给出单个元素的HTML内容。
Chrome控制台为了方便开发者调试,会把这种集合显示成可展开的下拉列表(就是你看到的“HTMLCollection [h1]”),点击展开就能看到里面的具体元素,这是控制台的默认调试逻辑哦。
怎么获取你想要的简化视图?
如果想直接看到<h1>的内容或者元素本身,有这几种简单方法:
取集合的第一个元素
HTMLCollection是索引从0开始的,所以直接加[0]就能拿到单个h1元素:document.getElementsByTagName("h1")[0]输入这个后,控制台就会直接显示
<h1>tester h1 in body</h1>的结构,展开还能看元素的各种属性。如果只想看文本内容,就用.innerText或.innerHTML:// 只拿纯文本内容 document.getElementsByTagName("h1")[0].innerText // 拿包含标签的完整HTML内容 document.getElementsByTagName("h1")[0].innerHTML用更直观的
querySelector方法
如果你只需要匹配第一个h1元素,推荐用现代的document.querySelector("h1"),它直接返回单个元素,不用再处理集合:document.querySelector("h1")同样,加
.innerText就能直接拿到文本:document.querySelector("h1").innerText快速查看集合里的所有元素
要是页面有多个h1,想一次性看所有元素的简化视图,可以用扩展运算符把集合转成数组:[...document.getElementsByTagName("h1")]控制台会以数组形式展示所有h1元素,每个都能单独查看。
内容的提问来源于stack exchange,提问作者Chi Lee
相关产品推荐
相关产品推荐

