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しかし、頭をひっくり返して、 、documentまたはオブジェクトも返すことができるように、より柔軟にしようとしましthisたが、失敗しました。オブジェクトを配列に入れようとするとpush、配列はまだ空です。windowtempElems

したがって、文字列が渡されたときにこの関数が要素の配列を返すようにする方法、または必要に応じてそれぞれのオブジェクト ( windowdocumentまたはthis) を返す方法を知りたいです。

注: jQuery を使用したくありません。したがって、jQuery に関する回答は投稿しないでください。

4

0 に答える 0