2016-05-31 3 views
0

DataTable의 특정 ID를 사용하여 행으로 스크롤하려고합니다. 다음은 그 코드입니다.DataTable에서 id로 요소를 가져올 수 없습니다.

function scroll_row(int_id) { 
    var obj_element = document.getElementById(int_id); 
    if(obj_element != null) { 
     var int_scroll_pos = obj_element.offsetTop; 
     $('#myTable').parent().scrollTop(int_scroll_pos-10); 
    } 
} 

은 그러나이 문제는 ID로를 얻는 동안 obj_element이 날이 null주고 있다는 점이다.

예를 들어 데이터 테이블에 50 개의 행이 있고 맨 위에 스크롤이있는 동안 40 번째 요소의 ID를 지정하려고하면 null이 반환됩니다.

하지만 내가 그 요소 가까이에 어딘가에 내려 갔을 때. getElementById의 값을 반환합니다.

여기에 어떤 문제가 있는지 알 수 없습니다. 누구든지이 사실을 알고 있니?

나는이 방법

$("#myTable").fnGetPosition(document.getElementById("262617")) 

하지만이 경우 https://datatables.net/forums/discussion/33/using-fngetposition-to-find-a-tr-by-id을하고 그것을 시도 또한이 fnGetPosition는 함수가 아닙니다 말한다. 내 데이터 테이블은 내가 언급 한 두 경우에 무슨 일이 일어나고 있는지 이해할 수 없습니다입니다

tableSettings = { 

... 

} 

var myTable = $('#myTable').DataTable(tableSettings); 

얼마나

이입니다. 도움이되기를 바래요. 감사합니다 :)

편집 - 예를

image with html

ID = 140,876 가진 하나는 데이터 테이블의 마지막 TR 행입니다 함께 이미지를 추가. 데이터 테이블의 첫 번째 요소 위로 스크롤하여 document.getElementById ("140876")를 시도하면 null이됩니다. 그러나 내가 아래로 스크롤하면 가치가 있습니다. 다른 행마다 동일하게 적용됩니다. 스크롤 할 때 아래쪽 행이 null을 반환합니다.

P. 첫 번째 이미지를 제거해야만 했으므로 이제는 1 개의 링크 만 추가 할 수 있습니다.

+0

수는 생성 된 HTML 마크 업의 예를 제공하십시오. –

+0

나는 당신이 무엇을 필요로하는지 잘 모르겠습니다. fnGetPosition 오류에 대한 스크린 샷을 찍었습니다. 다른 경우, 예를 들어 40 번째 요소와 같이 getElement를 log로 콘솔 할 때. 그것은 null을 제공합니다. 데이터 표를 40 번째 요소까지 스크롤 할 때 까지요. 나는 혼란스럽지 않기를 바란다. :) –

+0

'DataTables'에 의해 생성 된 HTML이 없다면,'id'가 기대하는 행이 포함되어 있는지 알 수 없습니다. 'id '를 요청할 때 아무것도 얻지 못하는 유일한 이유는'DataTables'에 의해 생성 된 코드에 존재하지 않기 때문입니다. –

답변

0

fnGetPosition를 사용하려면 다음과 같이 사용한다 : 그것은 잘못된 예의 수정 된 버전이 여기 있어요 http://live.datatables.net/xoqidaqi/1/

:

여기
var table = $('#myTable').dataTable(); // with a lower 'd' 
var row_index = table.fnGetPosition(this)[0]; 

가 작동 예입니다 https://datatables.net/forums/discussion/21582/fngetposition-undefined

+0

DataTable을 dataTable로 변경할 수 없습니다. 이미 사용한 다른 많은 기능이 작동하지 않습니다. 이것 주위에 다른 방법이 있습니까? –

+0

내가 게시 한 코드는이 호출을 '$ ("# myTable"). fnGetPosition (document.getElementById ("262617"))'으로 대체하기위한 것입니다.'DataTables'를 상위'D'와 함께 사용하면 설정으로 데이터 테이블을 인스턴스화 할 수 있습니다. 'dataTable'을 더 낮은 'd'와 함께 사용하면 인스턴스화 된 데이터 테이블을 검색 할 수 있습니다. –

+0

여전히 TypeError 오류가 발생합니다. a.nodeName은 정의되지 않았습니다. ... osition = function (a) {var b = this.api (! 0), c = a.nodeName.toUpperCase() == c? ... –

관련 문제