2014-10-11 6 views
1

새 DataTable을 만드는 기능을 만들고 싶습니다. 테이블이 이미 존재한다면, 필자의 함수가 기존의 테이블을 삭제하고 새로운 테이블을 생성하고 싶습니다.DataTables "정의되지 않은 'destroy'속성을 읽을 수 없습니다.

$.ajax().done(function(response){ 
      Init_DT(response['cols'], response['data']); 
     }); 

function Init_DT(cols, data){ 

     if($('#mytable tr').length > 0){ 
      table.destroy(); 
     } 

     var table = $('#mytable').DataTable({ 
      "data": data, 
      "columns": cols 
     }); 

    } 

이 기능은 내 첫 번째 테이블을 시작 잘 작동하지만 "속성을 정의되지 않음 읽기의 '파괴'할 수 없다 '후속 호출에 얻을 :

나는 이런 짓을.

+0

:

따라서 당신은

table = $('#mytable').DataTable({ "data": data, "columns": cols }); 

참조를 사용해야합니다. 그런 다음 데이터 테이블 인스턴스를 만듭니다. 그러나 두 번째 호출에서 길이가 0보다 클 때, 그것을 파기 할 수 없습니다. – Wistar

+0

당신 말이 맞아요. 하지만 로컬 범위 변수가 아닌가? 그리고 두 번째로 올 때 그것은 정말로 정의되지 않습니다. 기능 밖에서 테이블이 파괴 되었기 때문에? 파괴를 확인한 후에 만 ​​생성됩니다. 참조 용 -> http://www.w3schools.com/js/js_scope.asp – Meer

+0

참. 그러나 비록 내가 table = $ ('# mytable') .dataTable();을 사용한다고해도, 나는 전역 적이어야한다. 나는 같은 오류를 가지고있다. 어떤 제안 @Meer? – Wistar

답변

1

로컬 JavaScript 변수.

함수 내에 정의 된 변수에는 로컬 범위가 있습니다. 기능이 끝나면 파괴됩니다.

function myFunction() { 
var myVar = "value";} 

이 함수 myVar는 함수가 작업을 완료 한 후에 삭제됩니다. 다음 호출에서 다시 정의됩니다.

전역 변수를 사용하십시오. 즉 함수 밖에서 정의한 다음 사용하십시오. 즉

var myVar='value';function myFunction(){//here myVar can be accessed} 

또는 함수가 글로벌 될 것이다 변수에 값을 할당 내부 .

function myFunction(){ myVar = 'value'; } 

이제 myVar도 전역 적입니다. 최초의 호출시에 0이 너무 table.destroy는 =를 호출되지 않습니다 테이블의 길이를 w3Schools JS Variable Scope

관련 문제