2017-04-07 8 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

うまく説明され、魅力として働いた。 heheしかし、そのような愚かなエラー – jabadejat

0

@guestが言ったように、あなたは単にパラメータからexportedTableを削除する必要があります: `$( '体')へ

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

乾杯!それは私の間違いだった:) – jabadejat

関連する問題