6

特定の ID を持つ特定の要素の属性の値を取得したいと考えています。例として、 nexthrefであるaタグのidを取得したい:

<a href="?page=3" id="next">Next</a>

私はこのようにそれを得ることができることを知っています:

console.log(document.evaluate('//a[@id="next"]', document, null, XPathResult.ANY_TYPE, null).iterateNext().href);

しかし問題は、私の場合、属性の名前が異なる可能性があり、xpath クエリを介して指定する方法が必要であるということです。このようなもの:

'//a[@id="next"]/@href'
4

2 に答える 2

6

次のようなことを試してみてください:

document.evaluate('//a[@id="next"]/@href', document, null, XPathResult.ANY_TYPE, null).iterateNext().value;

xpath で指定した要素の種類 (要素ノード、テキスト ノード、属性) に応じて、iterateNext()さまざまな種類のオブジェクトが返されます。この場合、@href 属性を指定するとvalue、属性の値を含むプロパティを持つ JavaScript Attr オブジェクトが返されます。あなたの例を続ける:

<a href="?page=3" id="next">Next</a>

次の例を試すことができます。

//Returns true
console.log(document.evaluate('//a[@id="next"]/@href', document, 
  null, XPathResult.ANY_TYPE, null).iterateNext() instanceof Attr);

//Returns "?page=3"
console.log(document.evaluate('//a[@id="next"]/@href', document, 
  null, XPathResult.ANY_TYPE, null).iterateNext().value);

//Returns true
console.log(document.evaluate('//a[@id="next"]', document,
  null, XPathResult.ANY_TYPE, null).iterateNext() instanceof Node);

//Returns false
console.log(document.evaluate('//a[@id="next"]', document,
  null, XPathResult.ANY_TYPE, null).iterateNext() instanceof Attr);

//Returns true
console.log(document.evaluate('//a[@id="next"]', document,
  null, XPathResult.ANY_TYPE, null).iterateNext().nodeType === Node.ELEMENT_NODE);

//Returns "Next"
console.log(document.evaluate('//a[@id="next"]', document,
  null, XPathResult.ANY_TYPE, null).iterateNext().textContent);

//Returns true
console.log(document.evaluate('//a[@id="next"]/text()', document,
  null, XPathResult.ANY_TYPE, null).iterateNext() instanceof Node);

//Returns true
console.log(document.evaluate('//a[@id="next"]/text()', 
  document, null, XPathResult.ANY_TYPE, null).iterateNext().nodeType === Node.TEXT_NODE);

//Returns "Next"
console.log(document.evaluate('//a[@id="next"]/text()', document, 
  null, XPathResult.ANY_TYPE, null).iterateNext().nodeValue);
<!DOCTYPE html>
<html>
<body>
<a href="?page=3" id="next">Next</a>
</body>
</html>

あなたを助けることができるいくつかのリンク:

于 2016-08-03T01:08:33.077 に答える
3

Element.attributes プロパティを使用できます

document.evaluate('//a[@id="next"]', document, null, XPathResult.ANY_TYPE, null).iterateNext().attributes['href'].value

またはgetAttribute() メソッド

document.evaluate('//a[@id="next"]', document, null, XPathResult.ANY_TYPE, null).iterateNext().getAttribute('href')

于 2017-01-02T10:30:15.750 に答える