1. 程式人生 > 其它 >JavaScript中DOM查詢封裝函式

JavaScript中DOM查詢封裝函式

在JavaScript中可以通過BOM查詢html文件中的元素,也就是所謂的在html中獲取物件然後對它新增一個函式。

常用的方法有以下幾種:

①document.getElementById()    通過元素ID在全域性查詢元素

②document.getElementsByTagName()    通過元素標籤名字在全域性查詢元素

    element.getElementsByTagName()    通過元素標籤在指定元素內部查詢元素

③document.getElementsByClassName()    通過元素標籤的className在全域性查詢元素

    element.getElementsByClassName()    通過元素標籤的className在指定元素內部查詢元素

但是很多實際情況下,用這三種方法不是很方便,很多時候需要多次呼叫,就曉得有點麻煩,程式碼量也有點大,所以這個時候我們就需要將查詢函式封裝成一個函式。這裡我們可以參照css包含選擇器的特性,給函式傳遞一串字串。比如如下所示:

html結構:

 

傳遞的引數如下:

 var atrr = $(".box .box1 .div1 span");

然後就是封裝函數了。

首先我們需要獲取最外層的一個html標籤,然後再在這個標籤內部去查詢我們需要的元素。

var result = document.getElementsByTagName("html");

上面的程式碼中我們獲取了html中最外層的標籤<html>標籤

然後將接收到的字串按照空格分隔為一個數組,陣列的每個元素為一個className、ID或者標籤名。然後接下來就是遍歷了。

    當陣列元素為className時,我們就需要呼叫element.getElementsByClassName() 來獲取元素

    當陣列元素為標籤名時,我們就需要呼叫element.getElementsByTagName() 來獲取元素

    當陣列元素為ID時,我們就需要呼叫document.getElementById()  來獲取元素

 

最後當遍歷完成的時候,我們也就查詢到了我們需要的內容。程式碼如下:

function $(selector){
    var strs = selector.split(" ");//通過空格切割傳遞的字串
    var result = document.getElementsByTagName("html");//獲取最外層的dom元素
    for(var i = 0,len = strs.length;i<len;i++){//根據傳過來的字串,一層一層的遍歷查詢dom
        if(strs[i].charAt(0)==="#"){//如果是id,返回的是dom元素
            result = document.getElementById(strs[i].slice(1));
        }else if(strs[i].charAt(0)==="."){//如果是class,則返回的是一個偽陣列(集合),需要加一個下標,才能獲得dom
            result = byClass(strs[i].slice(1),result[0]);
        }else{//如果是tagName
            if(i===0)//代表傳遞的字串只有一個tagName,
                result = result[0].getElementsByTagName(strs[i]);
            else

 

更多內容請見原文,文章轉載自:https://blog.csdn.net/weixin_44519496/article/details/118567825