0

我有一个方法,它返回给定 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)添加我的跨度,但无济于事。我没主意了。

4

3 回答 3

1

在错误消息中,我可以发现r太多:

Uncaught ReferenceError: spansArrray is not defined
                               ^^^

似乎是另一个错字,不是在您在此处发布的代码中,而是在您执行的代码中……</p>

于 2013-04-02T16:44:07.690 回答
0

改成:

var spansArray = getAllSpansForID(verseID);
var length = spansArray.length;
于 2013-04-02T16:13:39.267 回答
0

哦!

正如您从我的错误消息中看到的那样,spansArrray(3 r's) 是未定义的。我定义了spansArray(2 r's)。我修好了,一切正常。只是一个错字......

我没有length = spansArray.length; 直接从代码中提取,而是直接写出来,所以这里发布的代码不会失败。

对不起大家。我同样感谢所有的帮助!!!

于 2013-04-02T16:23:36.040 回答