複数の条件を持つquerySelectorAll


105

複数の無関係な条件を使用してquerySelectorAllで検索することは可能ですか?はいの場合、どのように?そして、それらがANDまたはOR基準であるかどうかを指定する方法は?

例えば:

すべて見つけるにはどのようにフォームS、P sおよび伝説のシングルとquerySelectorAllのコールを?可能?


ANDまたはOR基準」の意味がわかりません。その例を挙げていただけますか?
ベルギ2015年

回答:


175

querySelectorAll無関係な条件を複数使って検索することはできますか?

はい。querySelectorAll完全なCSSセレクターを受け入れ、CSSにはセレクターグループの概念があるため、複数の無関係なセレクターを指定できます。例えば:

var list = document.querySelectorAll("form, p, legend");

...form または p または である要素を含むリストを返しlegendます。

CSSには他の概念もあります。より多くの基準に基づいて制限することです。セレクターの複数の側面を組み合わせるだけです。例えば:

var list = document.querySelectorAll("div.foo");

...すべてのリストを返しますdivという要素を)クラスを持っているfoo他の無視して、div要素を。

もちろん、それらを組み合わせることができます。

var list = document.querySelectorAll("div.foo, p.bar, div legend");

...これは、「任意の含める意味divも持っている要素fooクラス、任意のpも持っている要素bar、クラス、および任意のlegend内部でもあります要素をdiv。」


document.querySelectorAllから単一のクラスを使用する可能性はありますか?たとえば、var hotspots = document.querySelectorAll( "。clickMapItem.text、.clickMapItem.multiImageText");があります。var i; for(i = 0; i <hotspots.length; i ++){hotspots [i] .style.display = "none"; } if elseステートメントを使用する必要があります。これは、クラスが何も表示しないか、他のものかを確認する方法です。if(hotspots [0 or 1] .style.display == "none")が機能しない場合。
マイルミヤトビッチ2016年

1
@MileMijatovic:質問はコメントではなく質問として投稿する必要があります。ただし、参照:stackoverflow.com/questions/25238153/…–
TJ Crowder

わかりました、しかし一般的に、私が尋ねたことをすることは可能ですか?リンクが助けていない
マイルMijatović

セレクターグループのコンセプトは2018年も私のために機能しました...共有してくれてありがとう
Eric Hepperle – CodeSlayer20 1018年

17

ドキュメントによると、他のcssセレクターと同様に、必要な数の条件を指定でき、それらは論理「OR」として扱われます。

この例では、「note」または「alert」のいずれかのクラスを持つドキュメント内のすべてのdiv要素のリストを返します。

var matches = document.querySelectorAll("div.note, div.alert");

ソース:https//developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll

一方、「AND」機能を取得するには、たとえば、jqueryが言うように、単に多属性セレクターを使用できます。

https://api.jquery.com/multiple-attribute-selector/

"input[id][name$='man']" 要素のIDと名前の両方を指定し、両方の条件を満たす必要があります。クラスの.class1.class2場合、2つのクラスのオブジェクトを要求することは「」と同じくらい明白です。

両方の可能な組み合わせはすべて有効であるため、より洗練された「OR」および「AND」式に相当するものを簡単に取得できます。


2
メソッド自体は正しいですが、CSSを説明するためにjQueryを参照する必要はありません(特にOPの質問はJavaScriptに限定されているため)。
チャヤクーパー


0

純粋なJavaScriptを使用すると、これ(SQLなど)と必要なものを基本的に実行できます。

<html>

<body>

<input type='button' value='F3' class="c2" id="btn_1">
<input type='button' value='F3' class="c3" id="btn_2">
<input type='button' value='F1' class="c2" id="btn_3">

<input type='submit' value='F2' class="c1" id="btn_4">
<input type='submit' value='F1' class="c3" id="btn_5">
<input type='submit' value='F2' class="c1" id="btn_6">

<br/>
<br/>

<button onclick="myFunction()">Try it</button>

<script>
    function myFunction() 
    {
        var arrFiltered = document.querySelectorAll('input[value=F2][type=submit][class=c1]');

            arrFiltered.forEach(function (el)
            {                
                var node = document.createElement("p");
                
                node.innerHTML = el.getAttribute('id');

                window.document.body.appendChild(node);
            });
        }
    </script>

</body>

</html>


1
これは実際には質問、特にhow to specify whether those are AND or OR criteria一部に答えるものではありません。受け入れられた答えを参照してください
MeidanAlon19年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.