Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. Document
  4. evaluate()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

Dokument: evaluate()-Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.

Dieevaluate()-Methode desDocument-Interfaces wählt Elemente basierend auf demXPath-Ausdruck aus, der in den Parametern angegeben ist.

XPath-Ausdrücke können sowohl auf HTML- als auch auf XML-Dokumente angewandt werden.

Syntax

js
evaluate(xpathExpression, contextNode, namespaceResolver, resultType, result)

Parameter

xpathExpression

Ein String, der das zu evaluierendexpath darstellt.

contextNode

DerKontextknoten für die Abfrage.Es ist üblich,document als Kontextknoten zu übergeben.

namespaceResolver

Eine Funktion, die alle Namespace-Präfixe übergeben bekommtund einen String zurückgeben sollte, der den mit diesem Präfix verbundenen Namespace-URI darstellt.Sie wird verwendet, um Präfixe innerhalb desxpath selbst aufzulösen,sodass diese mit dem Dokument übereinstimmen können.Der Wertnull ist üblich für HTML-Dokumente oder wenn keine Namespace-Präfixe verwendet werden.

resultType

Eine Ganzzahl, die dem zurückzugebenden ErgebnistypXPathResult entspricht.Folgende Werte sind möglich:

ANY_TYPE (0)

Jeder Typ, der sich natürlich aus dem angegebenen Ausdruck ergibt.

NUMBER_TYPE (1)

Eine Ergebnismenge, die eine einzelne Zahl enthält. Nützlich zum Beispiel in einemxpath-Ausdruck, der diecount()-Funktion verwendet.

STRING_TYPE (2)

Eine Ergebnismenge, die einen einzelnen String enthält.

BOOLEAN_TYPE (3)

Eine Ergebnismenge, die einen einzelnen booleschen Wert enthält. Nützlich, zum Beispiel, in einemxpath-Ausdruck, der dienot()-Funktion verwendet.

UNORDERED_NODE_ITERATOR_TYPE (4)

Eine Ergebnismenge, die alle mit dem Ausdruck übereinstimmenden Knoten enthält. Die Knotenin der Ergebnismenge sind nicht unbedingt in der Reihenfolge, wie sie im Dokument erscheinen.

Hinweis:Ergebnisse dieses Typs enthalten Verweise auf Knoten im Dokument.Eine Änderung eines Knotens macht den Iterator ungültig.Nach einer Änderung eines Knotens wird beim Versuch, durch die Ergebnisse zu iterieren, ein Fehler auftreten.

ORDERED_NODE_ITERATOR_TYPE (5)

Eine Ergebnismenge, die alle mit dem Ausdruck übereinstimmenden Knoten enthält. Die Knotenin der Ergebnismenge befinden sich in der Reihenfolge, wie sie im Dokument erscheinen.

Hinweis:Ergebnisse dieses Typs enthalten Verweise auf Knoten im Dokument.Eine Änderung eines Knotens macht den Iterator ungültig.Nach einer Änderung eines Knotens wird beim Versuch, durch die Ergebnisse zu iterieren, ein Fehler auftreten.

UNORDERED_NODE_SNAPSHOT_TYPE (6)

Eine Ergebnismenge, die Schnappschüsse aller mit demAusdruck übereinstimmenden Knoten enthält. Die Knoten in der Ergebnismengesind nicht unbedingt in der Reihenfolge, wie sie im Dokument erscheinen.

Hinweis:Ergebnisse dieses Typs sind Schnappschüsse, die im Wesentlichen Listen von übereinstimmenden Knoten sind.Sie können Änderungen am Dokument vornehmen, indem Sie Schnappschussknoten ändern.Änderungen am Dokument machen den Schnappschuss nicht ungültig;jedoch, wenn das Dokument geändert wird, kann der Schnappschuss nicht mit dem aktuellen Zustand des Dokuments übereinstimmen,da Knoten verschoben, geändert, hinzugefügt oder entfernt worden sein können.

ORDERED_NODE_SNAPSHOT_TYPE (7)

Eine Ergebnismenge, die Schnappschüsse aller mit demAusdruck übereinstimmenden Knoten enthält. Die Knoten in der Ergebnismengesind in der Reihenfolge, wie sie im Dokument erscheinen.

Hinweis:Ergebnisse dieses Typs sind Schnappschüsse, die im Wesentlichen Listen von übereinstimmenden Knoten sind.Sie können Änderungen am Dokument vornehmen, indem Sie Schnappschussknoten ändern.Änderungen am Dokument machen den Schnappschuss nicht ungültig;jedoch, wenn das Dokument geändert wird, kann der Schnappschuss nicht mit dem aktuellen Zustand des Dokuments übereinstimmen,da Knoten verschoben, geändert, hinzugefügt oder entfernt worden sein können.

ANY_UNORDERED_NODE_TYPE (8)

Eine Ergebnismenge, die einen beliebigen einzelnen Knoten enthält, der mit dem Ausdruck übereinstimmt. DerKnoten ist nicht unbedingt der erste Knoten im Dokument, der mit demAusdruck übereinstimmt.

FIRST_ORDERED_NODE_TYPE (9)

Eine Ergebnismenge, die den ersten Knoten im Dokument enthält, der mit demAusdruck übereinstimmt.

result

Ein bestehendesXPathResult, das für die Ergebnisse verwendet werden soll. Wenn aufnull gesetzt, wird die Methode ein neuesXPathResult erstellen und zurückgeben.

Rückgabewert

EinXPathResult, das auf die ausgewählten Knoten verweist. Wennresultnull war, ist es ein neues Objekt, andernfalls ist es dasselbe Objekt, das alsresult-Parameter übergeben wurde.

Beispiele

Finden aller H2-Überschriften mit XPath

js
const headings = document.evaluate(  "/html/body//h2",  document,  null,  XPathResult.ANY_TYPE,  null,);/* Search the document for all h2 elements. * The result will likely be an unordered node iterator. */let thisHeading = headings.iterateNext();let alertText = "Level 2 headings in this document are:\n";while (thisHeading) {  alertText += `${thisHeading.textContent}\n`;  thisHeading = headings.iterateNext();}alert(alertText); // Alerts the text of all h2 elements

In dem obigen Beispiel wird ein ausführlicheresxpath gegenüber gängigen Abkürzungenwie//h2 bevorzugt. Im Allgemeinen bieten spezifischerexpath-Selektoren, wie im obigenBeispiel, eine signifikante Leistungsverbesserung, besonders bei sehr großenDokumenten. Dies liegt daran, dass die Evaluierung der Abfrage keine Zeitdamit verschwendet, unnötige Knoten zu besuchen. Die Verwendung von // ist im Allgemeinen langsam, da esjedenKnoten vom Stamm und alle Unterknoten besucht, um nach möglichen Übereinstimmungen zu suchen.

Eine weitere Optimierung kann durch sorgfältigen Einsatz des Kontextparameters erreicht werden. ZumBeispiel, wenn Sie wissen, dass der gesuchte Inhalt irgendwo innerhalb des Body-Tags ist,können Sie dies verwenden:

js
document.evaluate(".//h2", document.body, null, XPathResult.ANY_TYPE, null);

Beachten Sie, dass im obigen Beispieldocument.body als Kontext stattdocument verwendet wird, sodass dasxpath vom Body-Element startet. (In diesem Beispiel ist das"." wichtig, um anzuzeigen, dass die Abfrage vomKontextknoten, document.body, starten soll. Wenn das "." weggelassen würde (also//h2)würde die Abfrage vom Wurzelknoten (html) starten, wasviel verschwenderischer wäre.)

Weitere Informationen finden Sie unterEinführung in die Verwendung von XPath in JavaScript.

Element abrufen nach xml:id

Diese Funktion ist ein Ersatz fürDocument.getElementById() für den Fall, dass Sie nachxml:id suchen müssen.

js
function getElementByIdWrapper(xmlDoc, id) {  return xmlDoc.evaluate(    `//*[@xml:id="${id}"]`,    xmlDoc,    () => "http://www.w3.org/XML/1998/namespace",    XPathResult.FIRST_ORDERED_NODE_TYPE,    null,  ).singleNodeValue;}

Spezifikationen

Specification
DOM
# dom-xpathevaluatorbase-evaluate

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp