這幾天,我用js在寫一個貪喫蛇的案列時,發現getElementsByClassName()和querySelector()這兩個方法在用法上有一定的區別和聯繫,下面我將具體說一下:
一.getElementsByClassName()
首先,對於getElementsByClassName()方法來說,
(1) 其返回值是一個僞數組(元素集合),是通過索引來訪問數組中的每一個元素的。
(2) 可以通過length屬性來得到元素的個數。
<ul>
<li class="map1" id="map2"></li>
<li class="map1"></li>
<li></li>
</ul>
<script>
//獲取所有class選擇器爲map1的元素,並將返回值賦給map
//即此時的map就是一個僞數組
var map=document.getElementsByClassName("map2");
console.log(map.length);//打印出maps數組的元素個數
for(var i=0;i<map.length;i++)//循環遍歷每一個元素
{
console.log(map[i]);//通過過索引訪問
}
</script>
二.querySelector()
(1) querySelector() 方法返回文檔中匹配指定 CSS 選擇器的一個元素。可以是class選擇器、id選擇器、標籤選擇器等。
(2)需要注意的是:querySelector() 方法僅僅返回匹配指定選擇器的第一個元素。如果你需要返回所有的元素,請使用querySelectorAll() 方法替代。而querySelectorAll() 方法的返回值是一個僞數組,具體用法和getElementsByClassName()
方法類似。
<ul>
<li class="map1" id="map2"></li>
<li class="map1"></li>
<li></li>
</ul>
<script>
//獲取標籤選擇器爲ul的元素
var ul1=document.querySelector("ul");
//獲取id選擇器爲map2的元素
var a1=document.querySelector("#map2");
//獲取class選擇器爲map1的元素
//且爲第一個li元素
var a2=document.querySelector(".map1");
//獲取class選擇器爲map1的所有元素
var a3=document.querySelectorAll(".map1");
for(var i=0;i<a3.length;i++)//循環遍歷每一個元素
{
console.log(a3[i]);//通過過索引訪問
}
console.log(a1);
console.log(a2);
</script>