Ich versuche zu verwenden querySelectorAll um alle Link-Elemente mit einem Typ abzurufen service/... angegeben und komme nirgendwo hin.
Momentan wähle ich das aus:
root.querySelectorAll('link');
was mir alles gibt <link> Elemente, wenn ich nur diejenigen mit Typ möchte service/.*
Fragen:
Kann ich einem QSA-Selektor eine Regex hinzufügen? Wenn ja, wie geht das?
Schauen Sie sich diese Antwort an stackoverflow.com/a/38711853/7250868
– Ramil Schawaljew
21. September 2020 um 9:39 Uhr
Benjamin Grünbaum
Sie können einen regulären Ausdruck nicht wirklich in einem Selektor verwenden, aber CSS-Selektoren sind leistungsfähig genug für Ihre Anforderungen mit einer von regulären Ausdrücken inspirierten „beginnt mit“-Syntax.
Sie können einen Substring-Matching-Attributselektor verwenden: link[type^=service]
Liest “Knoten des Typs link mit einem Attribut type beginnend mit “Dienst”
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.
@häufig gerne geschehen! Für das, was es wert ist, a .filter Aufruf durch die Elemente, die ihre Typeneigenschaft überprüfen, ist imho auch eine vollkommen gültige Lösung.
– Benjamin Grünbaum
28. Mai 2013 um 12:11 Uhr
Dies ist nützlich, um zu 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 Winkel-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 Uhr
SUMME1
Ich weiß, das ist 7 Jahre alt, aber so machst du 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 dies 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 vielleicht hilft er jemandem weiter. Wenn like -Klausel benötigt wird und wir nicht nur nach dem Start suchen möchten, kann die folgende Syntax verwendet werden:
document.querySelectorAll('[type*=service]');
14382900cookie-checkKann ich in querySelectorAll einen regulären Ausdruck verwenden?yes
Schauen Sie sich diese Antwort an stackoverflow.com/a/38711853/7250868
– Ramil Schawaljew
21. September 2020 um 9:39 Uhr