我为我的自定义javascript库创建了一个自定义css选择器引擎函数,
var catchEl = function(el) { // Catching elements by identifying the first character of a string
var firstChar = el[0],
actualNode = el.substring(1, el.length),
elements,
tempElems = [];
if (!document.querySelectorAll) {
try{
if(firstChar === "#") {//So, we can look for ids
tempElems.push(document.getElementById(actualNode));
} else if(firstChar === ".") {//or classes
elements = document.getElementsByClassName(actualNode);
for(i=0;i<elements.length;i++) tempElems.push(elements[i]);
} else {//or tags
elements = document.getElementsByTagName(el);
for(i=0;i<elements.length;i++) tempElems.push(elements[i]);
}
} catch(e) {};
} else {//but before everything we must check if the best function is available
try{
elements = document.querySelectorAll(el);
for(i=0;i<elements.length;i++) tempElems.push(elements[i]);
} catch(e) {};
}
return tempElems;
}
此函数返回一个元素数组。但是,我转过头来试图让它更灵活,以便它也可以返回window
,document
或this
对象,但是不成功。每当我尝试push
window
对象进入tempElems
数组时,数组仍为空。
所以,我想知道当字符串通过它或返回相应的对象(window
,document
或this
)时,如何使此函数返回一个元素数组根据需要。
注意:我不想使用jQuery。所以,请不要发布有关jQuery的任何答案。