我试图将数组列表存储在变量中,但不知道如何解决它。
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);
}
最佳答案
首先,您应该在循环后更新 thisNode
,因为 arrayList
面向 thisNode
。
下一个问题可能是,您将 iterator.iterateNext();
设置为 while 循环内的新 var thisNode
,而不是更新您的 var thisNode
在你的 try block 中。 (因为它前面有 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);
}
正如 Steven 提到的,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);
}
关于javascript - 将数组列表存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53593172/