博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
getElement四种方法返回的不同
阅读量:6592 次
发布时间:2019-06-24

本文共 1072 字,大约阅读时间需要 3 分钟。

当想通过dom在js中获取单个html元素时,常用的四种方法有:

  • getElementById("id")
  • getElementsByClassName("className")
  • getElementsByTagName("tagName")
  • querySelector(".className")(或者#id或者直接写tag)

但是,通过

  • getElementsByClassName("className")
  • getElementsByTagName("tagName")

这两种方式获得的是一个NodeList,即使对应的元素只有一个,在使用的时候也必须使用[0],不然就无法得到正确的值。

接下来来证明一下这一点。

  • 0
  • 1
复制代码

我们有一个class为deck,id为d的ul列表。

//getElementById    ul0 = document.getElementById("d");    console.log(ul0);    console.log(typeof(ul0));    //getElementsByClassName    ul1 = document.getElementsByClassName("deck");    console.log(ul1);    console.log(typeof(ul1));    //getElementsByTagName    ul2 = document.getElementsByTagName("ul");    console.log(ul2);    console.log(typeof(ul2));    //querySelector    ul3 = document.querySelector("#d");    console.log(ul3);    console.log(typeof(ul3));复制代码

运行结果如图:

可以看到ul1和ul2取到的是一个类数组。

这个时候如果使用ul1.className,结果将会是undefined,请务必注意这一点,正确的写法应该是ul1[0].className。

那么继续证明ul1、ul2不是数组而是类数组,通过使用push()的方法向其中添加一个字符串A,会发现浏览器提示Uncaught TypeError: ul1.push is not a function。

这样就能证明了。

转载地址:http://reuio.baihongyu.com/

你可能感兴趣的文章
道术结合,方可修炼成架构师
查看>>
Apache Pulsar中的地域复制,第2篇:模式和实践
查看>>
JetBrains在CLion的Linux和OS X版本中引入Swift支持
查看>>
玩大了,开源协议修改引发MongoDB“大动荡”?
查看>>
独家揭秘:微博深度学习平台如何支撑4亿用户愉快吃瓜?
查看>>
数据不是石油,占得多未必有用
查看>>
IBM提出8位深度网络训练法,提速4倍同时保持高精度
查看>>
64位的Mac OS X也有Windows.Forms了
查看>>
VS 2019要来了,是时候了解一下C# 8.0新功能
查看>>
Chrome 42禁用NPAPI和相关插件:Java、Unity和Silverlight
查看>>
自己动手用PHP编写一个简单的HTTP Server(单进程版)
查看>>
React从入门到精通系列之(19)彻底理解React如何重新处理DOM(Diffing算法)
查看>>
从战争到外包软件开发:如何赢得最后胜利
查看>>
华中科大提出EAT-NAS方法:提升大规模神经模型搜索速度
查看>>
TensorFlow发布1.12.0版本,改善XLA稳定性和性能
查看>>
Box开源持续本土化平台Mojito
查看>>
CentOS 6.5下利用Docker使用Letsencrypt
查看>>
url到一个网页经历的什么
查看>>
为了监视快递小哥,我做了一个小程序!
查看>>
Swift 关联类型
查看>>