3

2つの類似したクラスがあります-「アイテム」と「アイテム1」

使用するdocument.getElementsByClassName('item')と、上記の両方のクラスに一致するすべての要素が返されます。

'item'クラスのみで要素を取得するにはどうすればよいですか?

4

5 に答える 5

5
document.querySelectorAll('.item:not(.one)');

(を参照querySelectorAll

document.getElementsByClassName('item')もう1つの方法は、返されるものをループして、oneクラスが存在するかどうかを確認することです。

if(element.classList.contains('one')){
  ...
}
于 2013-02-24T18:43:53.283 に答える
3

classnameitem oneは、要素にクラスitemとクラスがあることを意味しoneます。

したがって、実行するとdocument.getElementsByClassName('item')、その要素も返されます。

クラスのみの要素を選択するには、次のようにする必要がありますitem

e = document.getElementsByClassName('item');
for(var i = 0; i < e.length; i++) {
    // Only if there is only single class
    if(e[i].className == 'item') {
        // Do something with the element e[i]
        alert(e[i].className);
    }
}

これにより、要素にクラスのみがあることが確認されitemます。

ライブデモ

于 2013-02-24T18:44:01.843 に答える
1

クラス内のスペースは複数のクラスがあることを意味するため、完全一致のために独自の関数を作成する必要があります。何かのようなもの:

function GetElementsByExactClassName(someclass) {
  var i, length, elementlist, data = [];

  // Get the list from the browser
  elementlist = document.getElementsByClassName(someclass);
  if (!elementlist || !(length = elementlist.length))
    return [];

  // Limit by elements with that specific class name only
  for (i = 0; i < length; i++) {
    if (elementlist[i].className == someclass)
      data.push(elementlist[i]);
  }

  // Return the result
  return data;
} // GetElementsByExactClassName
于 2013-02-24T18:53:13.017 に答える
1

jQueryを使用している場合は、次のような属性と等しいセレクター構文を使用して実行できます$('[class="item"]')

を使用することを主張する場合document.getElementsByClassNameは、他の回答を参照してください。

于 2017-11-09T15:08:13.677 に答える
0

Array.filter一致したセットをフィルタリングして、クラスを持つセットのみにすることができますtest

var elems = Array.filter( document.getElementsByClassName('test'), function(el){
    return !!el.className.match(/\s*test\s*/);
});

または、持っているが持ってtestいないものだけone

var elems = Array.filter( document.getElementsByClassName('test'), function(el){
    return el.className.indexOf('one') < 0;
});

Array.filterブラウザによっては動作が異なる場合があり、古いブラウザでは使用できません。)ブラウザとの互換性を最大限に高めるには、jQueryが最適です。$('.test:not(.one)')

于 2013-02-24T18:54:17.133 に答える