js不使用原生获取dom方法,定义一个函数来获取不同的dom

实现一个getDom(str)函数,可以根据参数(str形式如:'#id'、'.Class'、'tag')的不同选择对应选择不同的dom。
'#id'此参数为根据id名称选择dom,.Class此参数为根据类名选择dom,'tag'此参数为根据标签名称获取dom。
不能使用原生的getElementsByClassName方法

function getDom(str){
        if(str[0] === '#'){
            return document.querySelector(str);
        }else{
            return document.querySelectorAll(str);
        }
    }

不就是在实现函数里面使用原生函数封装吗,不用原生你怎么封装,封装啥

css选择器

getDom(str){
  return document.querySelector(str);
}

jquery他不香吗?将原生的js封装好了,你只要拿来引入后调用即可

function trimClassName (dom) {
var reg = /\s+/g;
// 把所有的空格变成一个先
var newClassStr = dom.className.replace(reg, ' ');
return newClassStr;
};

function getByClass(_className) {
var allDomArray = [].slice.call(document.getElementsByTagName('*'), 0);
var newDomArr = [];
allDomArray.forEach(function (ele, index) {
var newClassStr = trimClassName(ele).trim();
var classNameArray = newClassStr.split(' ');
classNameArray.forEach(function (className, index) {
if (className == _className) {
newDomArr.push(ele);
}
})
});
return newDomArr;
};

function getDom(selector) {
this.length = 0;
if (selector.indexOf('.') != -1) {
var dom = getByClass( selector.slice(1) );
}else if (selector.indexOf('#') != -1) {
var dom = document.getElementById( selector.slice(1) );
}else {
var dom = document.getElementsByTagName(selector);
}
return dom;
} ;