继续得到“.getSelected不是一个函数”

时间:2011-01-29 16:17:27

标签: javascript html mootools

我已经在现有表的mootools 1.3中创建了一个HtmlTable.Select,尝试了“selectable:true”和“enableSelect”,没有任何作用,如果我尝试访问我的表的“getSelected”方法,我保持得到“.getSelected不是函数”,“selectAll”或“selectNone”等所有其他函数都能完美地运行“。

我的代码(来自班级内部):

this.options.HTMLTable = new HtmlTable(this.options.table, {
    selectable : true
});

// this works perfect ...  
this.options.HTMLTable.selectAll();

// ... but this causes the error!  
console.log(this.options.HTMLTable.getSelected());
你可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我不是mooTools专家,但如果你查看jsfiddle

您会在.__proto__的原型(this.options.HTMLTable)中看到方法selectAll已定义,但getSelected未定义。

这是调试的开始。添加一些数据到小提琴,使你的问题更加现实。

虽然HTMLTable上有._selectedRows属性。只需编写自己的.getSelected方法并完成它!

我刚刚阅读了源代码,方法getSelected不存在。这是它应该做的事情

function getSelected() {
    return this._selectedRows;
}

将其归档为错误,同时只使用

// Bug in HtmlTable. Custom implementation. Remove when using mootools 1.4
HtmlTable = new Class({
    Extends: HtmlTable, 
    getSelected: function() {
        return this._selectedRows;
    }
});

@DimitarChristoff建议您最好使用:

if (!HtmlTable.prototype.getSelected) {
    HtmlTable.prototype.getSelected = function() {
        return this._selectedRows;
    };      
}

这样,只有在必要时才更改HtmlTable的原型。你可能需要某种HtmlTable.Select加载检查。

查看新的fiddle