當然這些選擇器都是jQuery擴展的一些方法,那麼使用原生js時要怎樣來查找元素呢?今天就來簡單梳理下。
DOM定義了多種查找元素的方法,除了我們常用的getElementById(),還有getElementsByTagName()和getElementsByName()。使用這幾種方法方法我們可以查找html文檔中的任意html元素。
getElementById()
首先來看下getElementById(),這個方法很簡單,只需在參數中傳入html標簽的id屬性值即可,由於html頁面中的id具有唯一性,因此該方法返回的是單個元素對象。例如:
getElementsByTagName()
getElementsByTagName()參數需傳入的是一個html標簽名,它返回的是html文檔中所有與之匹配的元素列表,這個列表具有部分數組的特性,因此也稱其為類數組。當我們想操作某個特定的元素時,我們可以使用數組索引或item()來實現,例如:
當然我們還可以通過length屬性來循環遍歷節點:
getElementsByName()
getElementsByName() 常用來查找表單元素,參數中傳入html標簽的name屬性值,由於文檔中多個html標簽的name值可能相同(如單選按鈕),因此該方法返回的也是一 個元素列表。具體操作方法與getElementsByTagName()類似,這裡不在贅述。
getByClass()
雖然使用上面的幾種方法已經可以滿足常見需求,但是為了更方便的訪問元素節點,我們一般會自己封裝一個通過class來查找元素的方法:
getByClass 需傳入兩個參數,其中oParent為參考節點,即在oParent節點中查找元素,sClass為要查找的元素class的值。通過循環將 oParent內的html標簽的class值與傳入的sClass值一一對比,符合條件的會存入到數組aResult中,最後再返回這個數組。
另外這裡之所以用正則來匹配而沒有直接用aEle[i].className == sClass,是避免標簽的class值為多個時,出現匹配失效的情況。