我为我的自定义 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 的答案。