Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript';s XPath:如何获取元素的属性值?_Javascript_Xpath - Fatal编程技术网

JavaScript';s XPath:如何获取元素的属性值?

JavaScript';s XPath:如何获取元素的属性值?,javascript,xpath,Javascript,Xpath,我想获取具有特定id的特定元素的属性值。例如,我想获取a标记的href,该标记的id是下一个: 但问题是,在我的例子中,属性的名称可能不同,我需要一种通过xpath查询指定它的方法。大概是这样的: console.log(document.evaluate('//a[@id="next"]', document, null, XPathResult.ANY_TYPE, null).iterateNext().href); '//a[@id="next"]/@href' document.ev

我想获取具有特定id的特定元素的属性值。例如,我想获取
a
标记的
href
,该标记的
id
是下一个:

但问题是,在我的例子中,属性的名称可能不同,我需要一种通过xpath查询指定它的方法。大概是这样的:

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

试着这样做:

console.log(document.evaluate('//a[@id="next"]', document, null, XPathResult.ANY_TYPE, null).iterateNext().href);
'//a[@id="next"]/@href'
document.evaluate('//a[@id="next"]/@href', document, null, XPathResult.ANY_TYPE, null).iterateNext().value;
根据xpath中指定的元素类型(元素节点、文本节点、属性),
iterateNext()
返回不同类型的对象。在本例中,指定@href属性,它将返回一个javascript Attr对象,其属性
value
包含该属性的值。继续你的例子:

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

您可以使用

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

或者


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

为什么不执行
$x('//a[@id=“next”]')[0]。getAttribute('href')
?Chrome的控制台XPath函数代表什么,类似于
$
是用于
querySelectorAll
。您也可以执行
$x('//a[@id=“next”]/@href')[0]。value
console.log(document.evaluate('//a[@id=“next”]',document,null,XPathResult.ANY_类型,null)。iterateNext().getAttribute(_属性名称));