我有一个方法,它返回给定 id 模式的跨度数组。当我通过在函数末尾打印出数组的值进行测试时,确实创建了该数组,并且所有正确的元素似乎都在其中。
这是功能:
function getAllSpansForID(sectionID) {
var foundAllSpans = false,
i = 1,
spanID,
span,
spanArray = new Array();
/* Keep looking until we found all the selection spans.*/
while (!foundAllSpans) {
spanID = sectionID + "-" + i;
span = document.getElementById(spanID);
/*
If we didn't get a span we can assume there are no more to find.
We are done with this loop.
*/
if (span == null) {
foundAllSpans = true;
console.log("Found all spans.");
}
/*
Else, add the span to the array we are going to return.
*/
else {
spanArray[i-1] = span;
i++;
}
}
console.log("returning spanArray.length: " + spanArray.length);
for (i = 0; i < spanArray.length; i++) {
console.log("spanArray[i].id: " + spanArray[i].id);
console.log("spanArray[i].outerHTML: " + spanArray[i].outerHTML);
}
return spanArray;
}
我的问题是,每当我调用这个函数时,返回的值总是未定义的。
这段代码:
var spansArray = getAllSpansForID(verseID),
length = spansArray.length;
总是产生这个错误:
Uncaught ReferenceError: spansArrray is not defined
由于范围界定问题,我在使用 returnign 数组的 SO 上发现了许多类似的问题,但没有一个与我的确切情况相匹配。我曾尝试更改此方法,包括使用spanArray.push(span)
, 并spanArray.push.apply(spanArray, span)
添加我的跨度,但无济于事。我没主意了。