querySelectorAll()
和getElementsByTagName()
的区别
querySelectorAll()
方法获取到NodeList
对象,是静态的集合,getElementsByTagName()
方法获取到HTMLCollection
对象,是动态的集合。
querySelectorAll() | getElementsByTagName() | |
---|---|---|
返回值类型 | NodeList集合 | HTMLCollection集合 |
返回值状态 | 静态 | 动态 |
querySelectorAll()
查询的是执行时的DOM结构。如果后续DOM结构后续的结构发生改变,他所查询的结构仍然不会变。
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script>
var myul = document.querySelector("ul");
var myli = document.querySelectorAll("li");
console.log(myli.length); //5
var newli = document.createElement("li");
myul.appendChild(newli);
console.log(myli.length); //5,页面DOM结构虽然发生了改变,但是长度并没有发生改变,是静态的
</script>
</body>
getElementsByTagName()
获取页面的DOM结构,如果后续DOM结构后续的结构发生改变,他获取的结构也随之改变。
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script>
var myul = document.querySelector("ul");
var myli = document.getElementsByTagName("li");
console.log(myli.length); //5
var newli = document.createElement("li");
myul.appendChild(newli);
console.log(myli.length); //6,页面DOM结构然发生了改变,长度也随之变化
</script>
</body>