Gibt es eine Möglichkeit, eine Wildcard-Elementnamenübereinstimmung mit querySelector
oder querySelectorAll
durchzuführen? Ich sehe Unterstützung für Platzhalter in Attributabfragen, aber nicht für die Elemente selbst.
Das XML-Dokument, das ich analysieren möchte, ist im Grunde eine flache Liste von Eigenschaften, und ich muss Elemente finden, deren Namen bestimmte Zeichenfolgen enthalten.
Mir ist klar, dass das XML-Dokument wahrscheinlich einer Umstrukturierung bedarf, wenn ich dies benötige, aber das wird einfach nicht passieren.
Jede Lösung, außer die Verwendung des scheinbar veralteten XPath (IE9 hat ihn gelöscht), ist akzeptabel.
javascript
dom
domparser
selectors-api
Erik Andersson
quelle
quelle
Antworten:
[id^='someId']
stimmt mit allen IDs überein, die mit beginnensomeId
.[id$='someId']
wird mit allen IDs übereinstimmen, die mit endensomeId
.[id*='someId']
stimmt mit allen IDs überein, die enthaltensomeId
.Wenn Sie nach dem
name
Attribut suchen, ersetzen Sie es einfachid
durchname
.Wenn Sie über den Tag-Namen des Elements sprechen, glaube ich nicht, dass es einen Weg gibt, ihn zu verwenden
querySelector
quelle
document.querySelectorAll("div[id$='foo']")
durcheinander. IE8 hat nur teilweise QSA-Unterstützung. Ich denke, sie unterstützen nur CSS2.1-Selektoren, daher funktionieren diese Selektoren in IE8 nicht, aber IE9 + wird funktionieren.Ich habe über Einzeiler mit querySelector () nachgedacht und bin hier gelandet und habe eine mögliche Antwort auf die OP-Frage mit Tag-Namen und querySelector () erhalten, mit Credits an @JaredMcAteer für die Beantwortung meiner Frage, auch bekannt als RegEx-like stimmt mit querySelector () in Vanille-Javascript überein
In der Hoffnung, dass Folgendes nützlich ist und den Bedürfnissen des OP oder allen anderen entspricht:
Dann können wir zum Beispiel das src-Zeug bekommen, etc ...
quelle
Legen Sie den tagName als explizites Attribut fest:
Ich brauchte dies selbst für ein XML-Dokument mit verschachtelten Tags, die auf enden
_Sequence
. Weitere Informationen finden Sie in der Antwort von JaredMcAteer .Ich habe nicht gesagt, dass es hübsch wäre :) PS: Ich würde empfehlen,
tag_name
über tagName zu verwenden, damit Sie beim Lesen von 'computergenerierten' impliziten DOM-Attributen nicht auf Interferenzen stoßen.quelle
Ich habe gerade dieses kurze Drehbuch geschrieben. scheint zu funktionieren.
quelle
Es gibt einen Weg zu sagen, was nicht ist. Mach einfach das nicht etwas, was es niemals sein wird. Eine gute CSS-Selektorreferenz: https://www.w3schools.com/cssref/css_selectors.asp, die den: not-Selektor wie folgt anzeigt:
Hier ist ein Beispiel: ein div gefolgt von etwas (alles andere als ein az-Tag)
quelle