首页
学习
活动
专区
工具
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方法,只能由对象来调用。

    70650

    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.3K70

    JavaScript 基础

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

    1.2K50

    HTML DOC

    比方说,所有的文本节点都是 节点后代,一个文本节点是 节点后代。 节点也可以拥有先辈。先辈是某个节点父节点,或者父节点父节点,以此类推。...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

    10510

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

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

    18600

    JS-选项卡制作解释部分

    分别是0, 1, 2.对应到html中,就是第一个li、第二个li、第三个liclassName都成了0.这样先全部清除掉,到了下边j循环外,this.className处,再把点击对应li加上className...分别是0,1,2.对应到html中,就是第一个li、第二个li、第三个liclassName都成了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。

    1.9K20

    详析获取标签

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

    2.1K90

    读 Zepto 源码之神奇 $

    为什么要这么麻烦,不直接调用 querySelectorAll 方法呢?这是出于性能考虑。这里有个简单测试。这个测试里,页面上只有一个元素,如果比较复杂时候,差距更加明显。...maybeID && selector[0] == '.' 如果不是 id 选择器,并且选择器一个字符为 ....zepto.Z 函数 从第一篇代码结构中我们已经知道,其实实现 $ 函数核心是 zepto.init , zepto.init 最终返回是 zepto.Z 结果。...一一来看一下: 第一个判断条件为 selector[0] == '<' && fragmentRE.test(selector) 。selector 一个字符为 < ,并且为html标签 。...zepto.fragment 其实是通过 htmlString 返回一个dom集合。这个函数稍后会说到,这里先不展开。这里对应是用法4和用法5。

    81400

    HTML DOM 学习

    对页面中所有已存在HTML事件作出反应 可以在DOM中创建新HTML事件 DOM特性: 整个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

    96920

    「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不会识别htmlinnerHTML会识别 案例代码

    66150

    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

    78340

    【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+

    7510
    领券