2017-04-07 62 views
1

我正在使用TableExport.js脚本导出一个html表,并且我需要在通过隐藏不需要的行来过滤它之后导出数据。 TableExport的方法.update()在这里非常有用,但每当数据被过滤时(与onchange事件关联),我都会遇到一些问题。这里是我的代码的相关部分:将对象及其方法传递给Javascript中的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!

+0

更改到'$( '身体')上( '变', '.filter',函数(){' !要做的对象已经被困在一个封闭** **所以只用它 –

+0

谢谢它的工作你知道任何好解释的来源,我可以进一步深入到封:) – jabadejat

+0

呀!!!?[ **首选:D **](https://www.google.com/),然后[** this **](http://stackoverflow.com/questions/111102/how-do-javascript-closures -work)和[** this **](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures)! –

回答

3

事件处理函数被称为与事件对象作为参数。您可能只是想从范围访问exportedTable,而不是接受它作为参数。

+0

很好地解释,并作为一种魅力。这样一个愚蠢的错误虽然嘿嘿 – jabadejat

0

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

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

干杯!那是我的错误:) – jabadejat

相关问题