我试图将数组列表存储在变量中,但是不知道如何解决。
xpath将返回一个项目列表,并且可以很好地显示在控制台中。我的问题是我不知道如何将其存储在变量中以供以后使用列表。
如果我尝试使用“ arrayList”,它将仅返回数组中的最后一项,但在控制台中它将显示所有项。
有什么想法吗?
var iterator = document.evaluate('xpathgoeshere', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
try {
var thisNode = iterator.iterateNext();
while (thisNode) {
var arrayList = (thisNode.textContent);
var thisNode = iterator.iterateNext();
for (var i = 0; i < arrayList.length; i++) {
console.log(arrayList);
}
}
} catch (e) {
dump('Error: Document tree modified during iteration ' + e);
}
答案 0 :(得分:1)
首先,您应该在循环后更新thisNode
,因为arrayList
面向thisNode
。
下一个问题可能是,您在while循环内将iterator.iterateNext();
设置为新的var thisNode
,而不是在try块内更新var thisNode
。 (因为它前面的var
)
尝试一下::)
var iterator = document.evaluate('xpathgoeshere', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
try {
var thisNode = iterator.iterateNext();
while (thisNode) {
var arrayList = thisNode.textContent;
for (var i = 0; i < arrayList.length; i++) {
console.log(arrayList[i]);
}
thisNode = iterator.iterateNext();
}
} catch (e) {
dump('Error: Document tree modified during iteration ' + e);
}
正如史蒂文所说,thisNode.textContent
是一个字符串。我不知道您的刺痛是什么样子,但是也许您首先必须split()
,或者如果它是一个JSONstring,则必须使用JSON.parse()
才能获得阵列。
但是,如果您的thisNode.textContext
应该是数组中的项目,请尝试以下操作:
var iterator = document.evaluate('xpathgoeshere', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
try {
var thisNode = iterator.iterateNext();
var arrayList = [];
while (thisNode) {
arrayList.push(thisNode.textContent);
thisNode = iterator.iterateNext();
}
console.log(arrayList);
for (var i = 0; i < arrayList.length; i++) {
console.log(arrayList[i]);
}
} catch (e) {
dump('Error: Document tree modified during iteration ' + e);
}
答案 1 :(得分:1)
将节点添加到阵列中。
var iterator = document.evaluate('//div', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
const items = []
try {
var thisNode = iterator.iterateNext();
while (thisNode) {
items.push(thisNode)
var thisNode = iterator.iterateNext();
}
} catch (e) {
dump('Error: Document tree modified during iteration ' + e);
}
console.log(items);
<div>
<div>Item 1</div>
<div>Item 2</div>
</div>