0

我正在尝试学习 JQuerymobile,我正在做类似下面的事情,只是想检查 JQueryMobile 是否支持这样的事情

function BooksCategory () {
        ID          = '';
        title       = '';
        imgURL      = '';
        description = '';
        bookCounts= '';
        Books       = [];
};
function Books () {
        categoryID           = '';
        bookID               = '';
        name                 = '';
        imgURL               = '';
        Cost         = '';
        termsandcondition    = '';
}
this.booksCategory = [];

ParseResponse()
{
     session.CatagoriesCount = response.BooksCategory.length;

     for (var k=0; k < session.CatagoriesCount; k++)
     {
       session.booksCategory[k]  = new BookCategory();

       var NoOfBooks = session.BooksCategory[k].bookCounts

       for (var j=0; j<NoOfBooks; j++)

        session.booksCategory[k].Books[j]   = new Books();  
    }    

}

为什么我收到此语句的“未捕获类型错误:无法读取属性 '0'”

session.booksCategory[k].Books[j]   = new Books(); 

如果这不是正确的方法,我们如何在数组中动态创建数组?

问候拉维

4

1 回答 1

0

改变

function BooksCategory () {
        ID          = '';
        title       = '';
        imgURL      = '';
        description = '';
        bookCounts= '';
        Books       = [];
};

function BooksCategory () {
        this.ID          = '';
        this.title       = '';
        this.imgURL      = '';
        this.description = '';
        this.bookCounts= '';
        this.Books       = [];
};

将 Books 属性添加到BooksCategory使用创建的实例中new。没有它,session.booksCategory[k].Books就不存在,所以你不能接受它的元素[0],因此你的错误。

上下文this在 javascript 中并不隐含。

当然,对其他班级也做同样的事情。

编辑 :

并更换

var NoOfBooks = session.BooksCategory[k].bookCounts

经过

var NoOfBooks = session.booksCategory[k].bookCounts;
于 2012-10-10T14:08:16.013 回答