当想通过dom在js中获取单个html元素时,常用的四种方法有:
- getElementById("id")
-
getElementsByClassName("className")
-
getElementsByTagName("tagName")
-
querySelector(".className")(或者#id或者直接写tag)
但是,通过
-
getElementsByClassName("className")
-
getElementsByTagName("tagName")
这两种方式获得的是一个NodeList,即使对应的元素只有一个,在使用的时候也必须使用[0],不然就无法得到正确的值。
接下来来证明一下这一点。
<ul class="deck" id="d">
<li class="card">0</li>
<li class="card">1</li>
</ul>
复制代码
我们有一个class为deck,id为d的ul列表。
//getElementById
ul0 = ("d");
(ul0);
(typeof(ul0));
//getElementsByClassName
ul1 = ("deck");
(ul1);
(typeof(ul1));
//getElementsByTagName
ul2 = ("ul");
(ul2);
(typeof(ul2));
//querySelector
ul3 = ("#d");
(ul3);
(typeof(ul3));
复制代码
运行结果如图:
可以看到ul1和ul2取到的是一个类数组。
这个时候如果使用,结果将会是undefined,请务必注意这一点,正确的写法应该是ul1[0].className。
那么继续证明ul1、ul2不是数组而是类数组,通过使用push()的方法向其中添加一个字符串A,会发现浏览器提示Uncaught TypeError: is not a function。
这样就能证明了。