„querySelectorAll()“ mit mehreren Bedingungen in JavaScript
Lesezeit: 6 Minuten
Alan Coromano
Ist es möglich, eine Suche durchzuführen? querySelectorAll() mehrere unabhängige Bedingungen verwenden? Wenn ja, wie? Und wie kann man angeben, ob es sich dabei um UND- oder ODER-Kriterien handelt?
Zum Beispiel:
So finden Sie alle formS, Ps und Legendes mit einer Single querySelectorAll() Forderung? Möglich?
Ich bin mir nicht sicher, was Sie mit „UND- oder ODER-Kriterien„Können Sie dafür ein Beispiel nennen?
Ist es möglich, eine Suche durchzuführen? querySelectorAll mehrere unabhängige Bedingungen verwenden?
Ja, weil querySelectorAll akzeptiert vollständige CSS-Selektoren und CSS hat das Konzept von Selektorgruppen, wodurch Sie mehr als einen unabhängigen Selektor angeben können. Zum Beispiel:
var list = document.querySelectorAll("form, p, legend");
…gibt eine Liste zurück, die jedes Element enthält, das a ist formoderpoderlegend.
CSS hat auch das andere Konzept: Einschränken basierend auf mehr Kriterien. Sie kombinieren einfach mehrere Aspekte eines Selektors. Zum Beispiel:
var list = document.querySelectorAll("div.foo");
…gibt eine Liste aller zurück div Elemente, die Auch (Und) habe die Klasse fooandere ignorieren div Elemente.
Sie können sie natürlich auch kombinieren:
var list = document.querySelectorAll("div.foo, p.bar, div legend");
…was bedeutet „Beliebige einbeziehen“. div Element, das auch das hat foo Klasse, irgendein p Element, das auch das hat bar Klasse und alle legend Element, das sich auch in a befindet div.”
Gibt es eine Möglichkeit, eine einzelne Klasse von document.querySelectorAll zu verwenden, zum Beispiel habe ich var hotspots = document.querySelectorAll(“.clickMapItem.text , .clickMapItem.multiImageText”); var i; for (i = 0; i < hotspots.length; i++) { hotspots[i].style.display = "none"; } Ich muss die if else-Anweisung verwenden, um zu überprüfen, ob es sich um eine Klasse handelt, die keine oder etwas anderes anzeigt. if (Hotspots[0 or 1].style.display == "none") funktioniert nicht.
– Mile Mijatović
5. November 2016 um 9:18 Uhr
@MileMijatovic: Fragen sollten als Fragen und nicht als Kommentare gepostet werden. Aber siehe: stackoverflow.com/questions/25238153/…
– TJ Crowder
5. November 2016 um 9:22 Uhr
Ok, aber ist es im Allgemeinen möglich, das zu tun, was ich verlangt habe? Der Link hat nicht geholfen
– Mile Mijatović
5. November 2016 um 10:04
Das Konzept der Selektorgruppen funktionierte bei mir noch im Jahr 2018 … Danke fürs Teilen
– Eric Hepperle – CodeSlayer2010
18. Okt. 2018 um 15:16 Uhr
Jahr für Jahr benutze ich es immer noch document.querySelectorAll("div.foo", "div.bar") und es hat nie funktioniert. Code UX ist das nächste UX 😉
– Gabriel Glenn
12. Februar 2021 um 13:54 Uhr
mikus
Laut Dokumentation können Sie wie bei jedem CSS-Selektor so viele Bedingungen angeben, wie Sie möchten, und diese werden als logisches „ODER“ behandelt.
Dieses Beispiel gibt eine Liste aller div-Elemente im Dokument mit der Klasse „note“ oder „alert“ zurück:
var matches = document.querySelectorAll("div.note, div.alert");
ex. "input[id][name$='man']" Gibt sowohl die ID als auch den Namen des Elements an und beide Bedingungen müssen erfüllt sein. Für den Unterricht ist es so offensichtlich wie „.class1.class2„um ein Objekt von 2 Klassen zu erfordern.
Alle möglichen Kombinationen aus beiden sind gültig, sodass Sie leicht ein Äquivalent zu anspruchsvolleren „OR“- und „AND“-Ausdrücken erhalten können.
Obwohl die Methode selbst korrekt ist, besteht keine Notwendigkeit, auf jQuery zu verweisen, um CSS zu erklären (insbesondere, da die Frage des OP auf JavaScript beschränkt ist).
– Chaya Cooper
18. Dezember 2019 um 19:58 Uhr
schadet wohl nicht 🙂 eine schnelle Möglichkeit, weitere Optionen für diejenigen herauszufinden, die nicht täglich mit CSS arbeiten
– mikus
5. Juli 2022 um 10:34
Alejandro DV
Mit reinem JavaScript können Sie dies tun (z. B. SQL) und alles, was Sie brauchen, im Grunde:
Nur verwenden document.querySelectorAll('selector1, selector2, selector3') Hat bei mir nicht funktioniert, musste verwendet werden forEach() Methode anwenden, um das gewünschte Ergebnis zu erzielen.
Durch Angabe von Elementen und Attributen mit Kommas können Sie nun auswählen Äpfel <input>, Orangen <p>, Bananen <input> Und Kiwis <p> Wie nachfolgend dargestellt:
Ich bin mir nicht sicher, was Sie mit „UND- oder ODER-Kriterien„Können Sie dafür ein Beispiel nennen?
– Bergi
30. November 2015 um 15:26
Die Dokumentation behandelt dies im ersten Beispiel.
– Andy
30. November 2015 um 15:28