实现一个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;
} ;