1

我为我的自定义 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,documentthis对象,但没有成功。每当我尝试pushwindow对象放入tempElems数组时,数组仍然是空的。

所以,我想知道如何让这个函数在一个字符串通过它时返回一个元素数组,或者根据需要返回相应的对象(windowdocumentthis

注意:我不想使用 jQuery。所以,请不要发布任何关于 jQuery 的答案。

4

0 回答 0