我在现有表的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());


你能帮我吗?

最佳答案

我不是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

关于javascript - 不断获取“.getSelected不是函数”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4837909/

10-11 23:28