Ich versuche es zu verwenden querySelectorAll um alle Linkelemente mit einem Typ abzurufen service/... angegeben und komme nicht weiter.
Momentan wähle ich Folgendes aus:
root.querySelectorAll('link');
Das gibt mir alles <link> Elemente, wenn ich nur diejenigen mit Typ möchte service/.*
Fragen:
Kann ich einem QSA-Selektor einen regulären Ausdruck hinzufügen? Wenn ja, wie geht das?
Schauen Sie sich diese Antwort an: stackoverflow.com/a/38711853/7250868
– Ramil Shavaleev
21. September 2020 um 9:39 Uhr
Benjamin Grünbaum
Sie können in einem Selektor nicht wirklich einen regulären Ausdruck verwenden, aber CSS-Selektoren sind leistungsstark genug für Ihre Anforderungen mit einer „beginnt mit“-Syntax, die von regulären Ausdrücken inspiriert ist.
Sie können einen Teilstring verwenden, der mit Attributselektoren übereinstimmt: link[type^=service]
Liest „Knoten vom Typ link mit einem Attribut type beginnend mit „Dienstleistung“
Stellt ein Element mit dem att-Attribut dar, dessen Wert mit dem Präfix „val“ beginnt. Wenn „val“ die leere Zeichenfolge ist, stellt der Selektor nichts dar.
@frequent Gern geschehen! Für das, was es wert ist, a .filter Ein Aufruf über die Elemente, deren Typeigenschaft überprüft wird, ist meiner Meinung nach auch eine vollkommen gültige Lösung.
– Benjamin Grünbaum
28. Mai 2013 um 12:11 Uhr
Dies ist nützlich, wenn Sie versuchen, mithilfe der Controller-As-Syntax in Angular JS 1.5+ Zugriff auf eine Controller-Instanz zu erhalten. Dies ist genau die Antwort, die ich brauchte, als ich meine Angular-App mit der Controller-as-Syntax aktualisierte und Zugriff auf Konsolenebene auf ihre Bereiche haben wollte: angular.element( document.querySelectorAll( '[ng-controller^="' + <controller name> + '"' )[0] ).scope
– jusopi
25. Februar 2015 um 3:51
SUMME1
Ich weiß, dass dies 7 Jahre alt ist, aber so machen Sie es (für Attributwerte):
function DOMRegex(regex) {
let output = [];
for (let i of document.querySelectorAll('*')) {
if (regex.test(i.type)) { // or whatever attribute you want to search
output.push(i);
}
}
return output;
}
console.log(DOMRegex(/^service\//)); // your regex here
Suchen alle Elementattribute können Sie Folgendes verwenden:
function DOMRegex(regex) {
let output = [];
for (let i of document.querySelectorAll('*')) {
for (let j of i.attributes) {
if (regex.test(j.value)) {
output.push({
'element': i,
'attribute name': j.name,
'attribute value': j.value
});
}
}
}
return output;
}
console.log(DOMRegex(/(?<!t)service/)); // your regex here
Der Beitrag ist ziemlich alt, aber er könnte für jemanden hilfreich sein. Wenn like Wenn eine Klausel benötigt wird und wir nicht nur nach dem Anfang suchen möchten, kann die folgende Syntax verwendet werden:
Sie können es nicht verwenden Regulärer Ausdruck (Regex) aber kann verwenden CSS-Selektor für querySelectorAll() ebenso gut wie querySelector() Wie nachfolgend dargestellt. *Du kannst sehen 6.2. Teilstring-Matching-Attributselektoren.
link[type^="service"] kann alles auswählen <link>Es ist wessen type Attribut beginnt mit service:
document.querySelectorAll('link[type^="service"]');
// rel="multiply"'s <link> and rel="substract"'s <link>
[type^="service"] Sie können auch alle auswählen <link>Es ist wessen type Attribut beginnt mit service aber ich empfehle es nicht ohne link Da es weniger spezifisch ist, können auch andere Elemente ausgewählt werden:
document.querySelectorAll('[type^="service"]');
// rel="multiply"'s <link> and rel="substract"'s <link>
link[type*="service"] Sie können auch alle auswählen <link>Es ist wessen type Attribut enthält service:
document.querySelectorAll('link[type*="service"]');
// rel="multiply"'s <link> and rel="substract"'s <link>
Zusätzlich, link[src&="service"] Sie können auch alle auswählen <link>Es ist wessen src Attribut endet mit service:
document.querySelectorAll('link[src&="service"]');
// rel="multiply"'s <link> and rel="substract"'s <link>
14528900cookie-checkWie verwende ich einen regulären Ausdruck in querySelectorAll?yes
Schauen Sie sich diese Antwort an: stackoverflow.com/a/38711853/7250868
– Ramil Shavaleev
21. September 2020 um 9:39 Uhr