2017-04-07 6 views
1

나는 TableExport.js 스크립트를 사용하여 html 테이블을 내보내고 있으며 원하지 않는 행을 숨김으로써 필터링 한 후에 데이터를 익스포트해야한다. TableExport의 메서드 .update()은 여기에서 정말 유용하지만, 데이터가 필터링 될 때마다 onchange 이벤트와 관련된 몇 가지 문제가 있습니다.자바 스크립트에서 객체와 그 메소드를 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 문제가있는 사람들 모두에게 유용 할 것입니다. 그래서 나는 thee, 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에 액세스하려고했을 것입니다. @guest 말했듯이

+0

멋지게 설명하고 매력으로 일했습니다. hehe 그러나 어리석은 그런 어리석은 – jabadejat

0

, 당신은 단순히 매개 변수에서 exportedTable을 제거 할 수 있습니다. $`에

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

건배! 그건 내 실수 였어 :) – jabadejat