ライブラリを使用せずに querySelectorAll が利用できない場合に、属性によって要素を取得しますか? 質問する

ライブラリを使用せずに querySelectorAll が利用できない場合に、属性によって要素を取得しますか? 質問する
<p data-foo="bar">

同等のことをするにはどうすればいいでしょうか

document.querySelectorAll('[data-foo]')

どこクエリセレクタすべて利用不可?

少なくとも IE7 で動作するネイティブ ソリューションが必要です。IE6 は気にしません。

ベストアンサー1

getElementsByTagName('*') を実行し、"data-foo" 属性を持つ要素のみを返す関数を記述できます。

function getAllElementsWithAttribute(attribute)
{
  var matchingElements = [];
  var allElements = document.getElementsByTagName('*');
  for (var i = 0, n = allElements.length; i < n; i++)
  {
    if (allElements[i].getAttribute(attribute) !== null)
    {
      // Element exists with attribute. Add to array.
      matchingElements.push(allElements[i]);
    }
  }
  return matchingElements;
}

それから、

getAllElementsWithAttribute('data-foo');

おすすめ記事