将对象及其方法传递给Javascript中的onchange函数
我正在使用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!
事件处理函数被称为与事件对象作为参数。您可能只是想从范围访问exportedTable
,而不是接受它作为参数。
很好地解释,并作为一种魅力。这样一个愚蠢的错误虽然嘿嘿 – jabadejat
正如@guest说,你只需要从参数中删除exportedTable:
$('body').on('change', '.filter', function() {
# some code for filtering
tableUpdate(exportedTable);
});
干杯!那是我的错误:) – jabadejat
更改到'$( '身体')上( '变', '.filter',函数(){' !要做的对象已经被困在一个封闭** **所以只用它 –
谢谢它的工作你知道任何好解释的来源,我可以进一步深入到封:) – jabadejat
呀!!!?[ **首选: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)! –