繁体   English   中英

JavaScript类型错误索引i + 1

[英]JavaScript Type Error Index i+1

我正在尝试在对象内部编写一个简单的for循环。 本质上,它所做的就是将对象的Z位置设置在其加上增量之前,但第0个对象只是将增量添加到其原始位置。 以下是我用来执行此操作的代码:

        this.objs[0].setZ(this.objs[0].getZ()+delta);
        var i;
        for (i = 0; i < this.n; i++) {
            this.objs[i+1].setZ(this.objs[i].getZ()+delta); 
            alert("i = " + i + " i+1 =" + i+1);
        } 

由于某种原因,警报在第一遍返回i = 0 i + 1 = 01 ,在第二遍返回i = 1 i + 1 = 11 这似乎将i作为字符串或其他东西来对待,因为我希望警报在第一遍打印出i = 0 i + 1 = 1 ,在第二遍打印出i = 1 i + 1 = 2

我认为这似乎可以通过在Firefox开发工具中运行代码时遇到的以下TypeError确认。

TypeError: this.objs[(i + 1)] is undefined

i + 1是错误的类型,在这里我到底在做什么错?

- - 编辑 - -

我注意到for循环超出了范围,因此我将其更改为:

    for (i = 1; i < this.n; i++) {
        this.objs[i].setZ(this.objs[i-1].getZ()+delta); 
        alert(this.n);
    } 
}

(this.n的值= 3)。 由于某些原因,当i = 3时,这会不断循环。 我不知道为什么..

的确,使用了字符串串联而不是加法,但这不会导致您的错误。 在循环的最后一次运行中, i等于n - 1 ,但是您尝试访问的元素n不存在。 在for循环i < this.n i < this.n - 1更改为i < this.n - 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM