function $(selector) {
var allchilds = [];
var childs = function (element) {
return element.getElementsByTagName('*');
}
var ele = document.getElementsByTagName('html')[0];
var sele = selector.replace(/\s+/, ' ').split(' '); //为什么要空格去替换空格呢?
for (var i = 0, len = sele.length; i < len; i++) {
ele = childs(ele);
var eleLen = ele.length;
var isGet = false;//这行代码的意义?
switch (sele[i][0]) {
case '#':
for (var j = 0; j < eleLen; j++) {
if (ele[j].id === sele[i].substring(1)) {
ele = ele[j];
isGet = true;
break;
}
}
break;
case '.':
for (var j = 0; j < eleLen; j++) {
var name = uniqArray(ele[j].className.split(' '));
if (name.indexOf(sele[i].substring(1)) !== -1) { //括号中内容的意思??
ele = ele[j];
isGet = true;
break;
}
}
break;
case '[':
var valueLoc = sele[i].indexOf('=');
if (valueLoc !== -1) {
var key = sele[i].substring(1, valueLoc);
var value = sele[i].substring(valueLoc + 1, sele[i].length - 1);
for (var j = 0; j < eleLen; j++) {
if (ele[j][key] === value) {
ele = ele[j];
isGet = true;
break;
}
}
}
else {
var key = sele[i].substring(1, sele[i].length - 1);
for (var j = 0; j < eleLen; j++) {
if (ele[j][key]) {
ele = ele[j];
isGet = true;
break;
}
}
}
break;
default :
for (var j = 0; j < eleLen; j++) {
if (ele[j].tagName === sele[i].toUpperCase()) {
ele = ele[j];
isGet = true;
break;
}
}
break;
}
}
if (!isGet) {
ele = null;
}
return ele;
}
万分感谢