2016-05-31 267 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); 
    } 
} 

但這樣做的問題是,obj_element是給我空,同時通過ID得到它。

例如,如果我的數據表中有50行,並且嘗試給出第40個元素的id,而滾動位於頂部則返回空值。

但是,當我向下滾動某處接近該元素。它會返回getElementById的值。

我不知道這裏有什麼問題。任何人都知道這件事?

我也嘗試過做這樣https://datatables.net/forums/discussion/33/using-fngetposition-to-find-a-tr-by-id

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

但在這種情況下,它說fnGetPosition不是一個函數。

這是我的數據表是如何

tableSettings = { 

... 

} 

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

我無法理解什麼是在這兩個我提到的情況發生。希望得到一些幫助。謝謝:)

編輯 - 添加圖像與例子

image with html

使用id = 140876的一個是數據表的最後一排的TR。如果我向上滾動到數據表的第一個元素並嘗試document.getElementById(「140876」),它會讓我爲空。但是如果我滾動到底部,我會得到價值。每隔一行也一樣。當我向上滾動時,向下的行將返回null。

P.S.必須刪除第一張圖片,現在我只能添加1個鏈接。

+0

你能請提供一個生成的HTML標記的例子? –

+0

我不太清楚你需要什麼。我爲fnGetPosition錯誤拍了截圖。在其他情況下,當我控制檯登錄getElement id爲例如第40個元素。它給出null。直到我將數據表向下滾動到第40個元素爲止。我希望我不會感到困惑。 :) –

+0

如果沒有'DataTables'生成的HTML,我們不能看到行是否包含你所期望的'id'。在請求'id'時,你沒有得到任何東西的唯一原因是它沒有出現在'DataTables'生成的代碼中。 –

回答

0

要使用fnGetPosition,你應該使用這樣的:

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

這裏是一個工作示例:http://live.datatables.net/xoqidaqi/1/

這是錯誤的例子的修正版本,在這裏找到: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(); return「TR」 == c?... –