首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么getElementsByTagName()返回一个html集合,而getElementsByTagName()[0]返回未定义的?

getElementsByTagName()是一个DOM方法,用于通过标签名获取文档中所有匹配的元素。它返回的是一个HTML集合(HTMLCollection),而不是一个单独的元素。

HTML集合是一个类数组对象,它包含了所有匹配的元素,按照它们在文档中出现的顺序排列。由于返回的是一个集合,所以可以通过索引来访问其中的元素。

当使用getElementsByTagName()[0]时,意图是获取集合中的第一个元素。然而,由于返回的是一个集合对象,而不是一个单独的元素,所以无法直接通过索引来访问。因此,尝试访问索引为0的元素会返回未定义(undefined)。

如果想要获取集合中的第一个元素,可以使用以下方式之一:

  1. 使用索引访问方式:
  2. 使用索引访问方式:
  3. 使用集合对象的item()方法:
  4. 使用集合对象的item()方法:

需要注意的是,如果没有匹配的元素,getElementsByTagName()会返回一个空的HTML集合,此时访问索引为0的元素同样会返回未定义。

关于HTML集合和getElementsByTagName()方法的更多信息,可以参考腾讯云的文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DOM概述 选取文档元素

,它把这些id映射到对应的Element对象 * 如果一个id未定义,将会抛出一个Error对象 */ function getElements(/*ids...*/) { var elements...举一个栗子,选取所有包含span元素的对象 var spans = document.getElementsByTagName("h3") 将会返回一个NodeList对象 var firstspara...= document.getElementsByTagName("p") // 选取所有的p元素的,返回一个所有p元素的对象 console.log(firstspara[0]); // 返回第一个元素...查找第一个p元素里的span元素 var firstpara = document.getElementsByTagName("p"); firstpara[0].getElementsByTagName...html中,总是为html元素 节点列表和html集合 getElementsByName()以及getElementsByTagName()都会返回NodeList对象 Nodelist 对象 : 属于只读的类数组对象

1K60
  • 【web必知必会】—— DOM:四个常用的方法

    getElementsById()   通过getElementById()可以返回该id所在的节点对象,在html中id是唯一的,不能重复,因此通过这个方法肯定只能得到一个对象。   ...getElementsByTagName()   再看getElementsByTagName(),这个是返回标签对应的所有对象集合,因此方法名字是Elements!...("*"); console.log(liItems2);   上面的代码中,第一个方法获得是整个文档的li对象集合,而第二个方法是purchases对象中包含的li集合。   ...因此,第一个方法获得了6个li对象,而第二个方法中只有三个。 ?   另外可以看到,这个方法返回的集合中有一个属性,length,可以获得集合的长度。   ...而只有第一个对象包含title属性。   因此会得到如下的结果: ?   setAttribute()   类似上面的getAttribute方法,只能由对象来调用。

    71550

    querySelector与querySelectorAll

    一样,querySelector返回的是单独的一个节点,而querySelectorAll返回的是一个节点集合,换句话说就是querySelectorAll返回的是一个节点对象的数组。...querySelectorAll和getElementsByTagName的区别 querySelectorAll与getElementsByTagName最终得到的都是一个节点集合,那么他们之间是否只是简化写法这么简单呢...其实他们并不一样,querySelectorAll更像是jQuery的选择器,获取到的节点都是静态的,而getElementsByTagName获取到的节点是动态的 静态节点和动态节点的理解:静态和动态可以这么理解...,静态保存的是过去,而动态永远保存的是现在。...3、第三个先用querySeletcor找到id为my-id的节点,然后再使用querySelectorAll找"div div"这种结构,然而这里得到的并非是1,而是3,为什么会是3,这里就是querySelectorAll

    1.4K70

    JavaScript 基础

    -- 内容在这 --> 因为浏览器执行 HTML 文件,是从上而下执行的...,而控制台却把所有的参数都打印了出来,这是因为 alert 函数一般用于输出字符串类的提示或警告信息,不过它的参数只有 1 个,多余的会被丢弃JavaScript 复合数据类型数组 Array,一组值的有序集合...,使用下标体现有序,数组的下标从零开始,通过下标访问某个数组元素对象 Object,一组键值对的集合,键值对以 : 相隔,属性间用逗号分隔,最后一个属性的逗号可省略,对象属性的访问方式有两种:① 点访问法...('div1'); //获取 id 为div1 的元素getElementsByTagName()方法,将返回一个对象数组这个数组保存着所有相同元素名的节点列表document.getElementsByTagName...() 方法 (IE 不兼容)通过标签的 class 值来获取标签 (返回的是一个数组,将所有相同 class 名的标签返回)querySelector() 方法,接受一个参数:通过元素的 css 选择器查找元素

    1.2K50

    HTML DOC

    比方说,所有的文本节点都是 html>节点的后代,而第一个文本节点是 节点的后代。 节点也可以拥有先辈。先辈是某个节点的父节点,或者父节点的父节点,以此类推。...getElementsByTagName() 方法会使用指定的标签名返回所有的元素(作为一个节点列表),这些元素是您在使用此方法时所处的元素的后代。..."); 或者: document.getElementById('ID').getElementsByTagName("标签名称"); 实例 1 下面这个例子会返回文档中所有 元素的一个节点列表...: document.getElementsByTagName("p"); 实例 2 下面这个例子会返回所有 元素的一个节点列表,且这些 元素必须是 id 为 "maindiv" 的元素的后代...> 在上面的HTML代码中,第一个 是 元素的首个子元素(firstChild),而最后一个 是 元素的最后一个子元素(lastChild)。

    1K10

    【Web APIs】JavaScript 操作多个元素 ① ( 多选一互斥按钮案例 | getElementsByTagName 方法获取 HTMLCollection 伪数组对象 )

    getElementsByTagName 方法 , 可以得到一个 HTMLCollection 对象 , 这是一个 伪数组 , 可通过数组下标获取 DOM 对象 ; getElementsByTagName...该参数是不区分大小写 ; 返回一个 HTMLCollection 对象 , 这是一个动态更新的集合 , 包含了所有匹配的元素 , HTMLCollection 类似于数组 , 但它并不是一个真正的数组...集合中的元素 , 也要跟着更新 ; 调用 document.getElementsByTagName('button') 代码 , 可以获取 文档中所有的 button 标签 , //...获取所有 button 标签元素 // getElementsByTagName 函数 的 返回值是 NodeList 对象 , var buttons = document.getElementsByTagName...获取所有 button 标签元素 // getElementsByTagName 函数 的 返回值是 NodeList 对象 , var buttons = document.getElementsByTagName

    12310

    JS-选项卡制作解释部分

    分别是0, 1, 2.对应到html中,就是第一个li、第二个li、第三个li的className都成了0.这样先全部清除掉,到了下边j循环外,this.className处,再把点击的对应的li加上className...分别是0,1,2.对应到html中,就是第一个li、第二个li、第三个li的className都成了0.这样先全部清除掉,到了下边j循环外,this.className处,再把点击的对应的li加上className...('li');//用这个方法,获取的就是那干脆又干净的三个li var li3 = ul.children; // alert(li3.length); //li1 == li2,方法获取到的都是一个集合...而childNodes的改进方法就是 【父元素.children】,这样获取的就和ByTagName的一样,忽略空格换行符文本,只找实实在在存在的标签,然后汇成集合。最终长度也是只有3个li。...因为空文本的nodeType==3,而只有元素标签的nodeTypd==3。

    2K20

    【如果你要学JS】——数据类型及其内存分配

    2.而Web API是浏览器提供的一套操作浏览器功能和页面元素的API( BOM和DOM)。2.DOM是啥?...html>3.根据标签名获取 使用getElementsByTagName(方法可以返回带有指定标签名的对象的集合),以伪数组的形式存储 3像素人是个大帅哥 4像素人是个大帅哥 5像素人是个大帅哥 // 返回的是获取过来元素对象的集合以伪数组的形式存储的...// 如果页面中没有此元素,依旧返回一个伪数组,只不过是空的 var liss = document.getElementsByTagName('li');...4.通过HTML5新增的方法获取 1.getElementsByClassName根据类名获得某些元素集合2.querySelector返回指定选择器的第一个3.querySelectorAll根据选择器返回所有指定元素对象集合

    19300

    详析获取标签

    那么获取到的结果就不止一个了,因此getElementsByClassName()获取到的结果是以类似数组的形式返回(语法与数组类似,但不属于数组);代码14和15行,是通过数组下标的形式来访问获取到的标签...(h2Ele[0]); console.log(pEle[0]); 结果: ?...HTML5学堂 - 刘国利 网名:独行冰海 座右铭:为了自己心底的梦、珍重的事、守护的情而奋斗!...代码分析: querySelector和querySelectorAll他们之间的区别就好比getElementById和getElementsByTagName一样,querySelector返回的是单独的一个标签...,而querySelectorAll返回的是一个标签集合,换句话说就是querySelectorAll返回的结果是以类似数组的形式返回(语法与数组类似,但不属于数组)。

    2.1K90

    HTML DOM 学习

    对页面中所有已存在的HTML事件作出反应 可以在DOM中创建新的HTML事件 DOM的特性: 整个HTML页面文档就是一个文档节点(只存在一个 html>根元素) 每一个HTML内的标签是一个元素节点...每一个HTML元素中的文本是文本节点 每一个HTML属性中的内容是属性节点 注释内容属于注释节点 DOM的节点: doucument 文档节点;HTML文档的父节点,DOM文档的根节点 element...) 返回指定标签ID名的元素 document.getElementsByName() 返回指定标签Name名的元素 document.getElementsByTagName() 返回指定标签类型名的元素...); parentNode : 返回子节点的父节点对象 console.log(d1.parentNode); childNodes : 返回指定子节点对象的全部集合 console.log(d1.childNodes...) console.log(d1.childNodes.length) children : 返回对象元素子节点的对象集合 console.log(d1.children) console.log(d1

    97220

    「Web编程API」- 01

    获取元素 为什么要获取页面元素?例如:我们想要操作页面上的某部分(显示/隐藏,动画),需要先获取到该部分对应的元素,再对其进行操作。 1.3.1....获取过来元素对象的集合 以伪数组的形式存储的 var lis = document.getElementsByTagName('li'); console.log(lis...); 注意:getElementsByTagName()获取到是动态集合,即:当页面增加了标签,这个集合中也就增加了元素。...var li = document.querySelector('li'); console.log(li); // 3. querySelectorAll()返回指定选择器的所有元素对象集合...获取内容时的区别:innerText会去除空格和换行,而innerHTML会保留空格和换行 设置内容时的区别:innerText不会识别html,而innerHTML会识别 案例代码

    66650

    【Web APIs】DOM 文档对象模型 ② ( 根据标签名获取 DOM 元素 - getElementsByTagName 函数 | 获取指定标签下的 DOM 元素 )

    对象集合 ; 调用 Document 的函数 , 获取的是 整个文档的 指定标签名称 的元素 ; 调用 Element 的函数 , 获取的是 Element 容器下的 指定标签名称 的元素 ; getElementsByTagName..."div" 参数 ; elements 返回值 : 返回的结果是 封装有若干 Element 对象的 HTMLCollection 对象 ; 该对象中的 DOM 元素顺序是按照 DOM 树的 DOM...元素 发现顺序 进行排列的 ; HTMLCollection 对象是一个 " 伪数组 " , 有数组长度 , 也可以使用索引下标访问 , 但是没有数组的 push、pop 等数组函数 ; 代码示例..., 如果指向获取某一个指定标签下的 DOM 元素 , 则需要如下步骤 : 首先 , 通过 调用 document.getElementById 函数 , 获取指定标签对应的 Element 元素 ; 然后...(elements); // 遍历 HTMLCollection 中封装的 DOM 元素 for (var i = 0; i < elements.length; i+

    9810

    Web API - DOM 第一节(获取元素)

    使用 getElementById获取带有ID的元素对象 Document的方法 getElementById()返回一个匹配特定 ID的元素....: ---- 根据标签名获取 使用 document.getElementsByTagName可以返回带有制定标签名的对象的集合 实例: 猫狗鼠鱼 猫狗鼠鱼...('li'); console.log(tag); 返回: 返回的是获取过来元素对象的集合,以伪数组的形式存储的 也就是说我们可以通过提取数组元素的方法得到其中一个元素的内容。...---- 例如: console.log(tag[0]); 通过这个,我们可以得到第一个元素的内容:猫狗鼠鱼 如下图: 通过遍历的方式依次打印其中的元素 如果我们想依次打印里面的元素,可以使用遍历的方式...: for(var i = 0 ;i < tag.length;i++){ console.log(tag[i]); } 得到: 得到元素里面的某些标签 element.getElementsByTagName

    79240
    领券