在Javascript中将对象及其方法传递给onchange函数

时间:2017-04-07 20:30:05

标签: javascript jquery function methods jquery-events

我正在使用TableExport.js脚本导出html表,我需要通过隐藏我不想要的行来过滤数据。 TableExport的方法.update()在这里非常有用,但每次过滤数据时都会遇到一些问题,这与onchange事件有关。以下是我的代码的相关部分:

$(function () {
    var exportedTable = $("#taskListTable").tableExport();
    exportedTable.update({
        // some options
    });

    $('body').on('change', '.filter', function (exportedTable) {
        // some code for filtering
        tableUpdate(exportedTable);
    });
})

function tableUpdate(table) {
    table.update({
        ignoreCSS: ["tr.tableexport-ignore", "tr.tableexport-ignore>td",
                    "tr.tableexport-ignore>th", "tr.hidden", "tr.hidden>td"]
    });
}

我一直收到Uncaught TypeError: Cannot read property 'update' of undefined类型的错误。我一直在阅读很多线程(比如:Javascript passing object to function)和其他信息,以了解传递值和引用之间的区别,但是我阅读的越多,尝试我的思维就越混乱。所以任何人都可以看到我的方法失败了吗? - 虽然它是部分遗留代码,但如果有必要,我可以重新构建大部分代码。

我想这更像是JS误用的问题,所以我希望这个问题对于使用TableExport的人和具有类似JS问题的人都有用。所以我召唤你,JavaScript Jedis!

2 个答案:

答案 0 :(得分:3)

使用事件对象作为参数调用事件处理函数。您可能只想从范围访问exportedTable,而不是将其作为参数接受。

答案 1 :(得分:0)

正如@guest所说,你只需要从参数中删除exportedTable:

$('body').on('change', '.filter', function () {
    # some code for filtering
    tableUpdate(exportedTable);
});