1. 程式人生 > >document.getElementById 和 document.getElementsByClassName獲取DOM元素的區別

document.getElementById 和 document.getElementsByClassName獲取DOM元素的區別

 

  想必小夥伴們對於 JS 獲取DOM的幾種方法早已爛熟於心,瞭然於胸,

   尤其是 document.getElementByIddocument.getElementsByClassName,

   看看下面截圖,用上面2種方法獲取到元素並新增點選事件後,控制檯會打印出什麼呢?

 

  

 

 

   可能有小夥伴晃眼一看,這麼簡單,不就是 1和2 嗎,真的是這樣嗎?下面看看控制檯的列印截圖

 

  

 

   結果是隻打出了1,為什麼沒有打印出2呢?

   現在我們把2種獲取DOM的方法打印出來,如下截圖,

  console.log(test_id);  console.log(test_class);

 

  

 

 

  

 

 

  結論:

     ①:前者獲取的是指定的具有唯一性的一個元素,後者獲取的是一個集合,

       ②:document.getElementsByClassName不能直接給一個集合新增事件,

         要用陣列索引的方式,test_class[0].onclick = function(){}


     ③:document.getElementsByClassName獲取第一個元素就是test_class[0],第二元素test_class[1],以此類推

     

 

  測試demo

  

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/> <title></title> </head> <body> <button id="Test">我是id</button> <button class="test">我是class</button> <button class="test">我也是class</button> <script> var test_id = document.getElementById("Test"); var test_class = document.getElementsByClassName("test"); test_id.onclick = function() { console.log(1); } test_class[0].onclick = function() { console.log(2); } test_class[1].onclick = function() { console.log(3); } console.log(test_id); console.log(test_class); </script> </body> </html>

 

 

  寫這篇部落格的初衷說來慚愧,因為習慣了用id獲取元素,所以當用class獲取元素時,總會忘記獲取的是一個集合,

  這也說明我基礎還是不牢固,以此警示自己,希望自己不要好高騖遠,打好基礎