2010-02-03 50 views
3

當表格大於div-scroll-y欄的顯示位置時,我在具有設置高度的div內有一個表格。 問題是,如果div的滾動條位於頂部,而隱藏底部的其他行,並且用戶按下按鈕添加新行,則該行添加在表格的底部,因此您看不到它。添加新行時,將焦點設置到div內表格的末尾

無論如何用javascript,vbscript或css將焦點設置爲已創建的行,以便在添加時可見?

這是調用添加新行的函數的代碼。

strRow = strRow + "<div> 
     <input ID='AddRowTableNew_" + cstr(newrow.id) + "' type='button' 
     value='Add New Row' 
     onclick='vbscript:AddNewRow 0," + cstr(newRow.id)+ "'/> 
    </div>" 

任何幫助,將不勝感激。

PD:我需要這個在VBScript或JavaScript上,不需要JQuery。

謝謝。

+0

jQuery是JavaScript的本身。 – rahul 2010-02-03 10:41:35

回答

5

嘗試Element.scrollIntoView();。它適用於Firefox,IE6 +,Opera和Google Chrome/Safari。

你也可以提供一個布爾值,其功能將指定的元素滾動到:

// Align the element with the top of the parent 
Element.scrollIntoView(); 
Element.scrollIntoView(true); 

// Align the element with the bottom of the parent 
Element.scrollIntoView(false); 

編輯:用一個例子

MDC documentationscrollIntoView要滾動至底部,您可以也只是設置元素的scrollTop屬性等於scrollHeight屬性:

Element.scrollTop = Element.scrollHeight; 
+0

嗨安迪,這對我所需要的東西來說非常方便,但是我遇到了一個小問題。 (onclick =「vbscript:AddNewRow(); Element.scrollIntoView(false);」 – Amra 2010-02-03 10:58:10

+1

if(onclick =「vbscript:AddNewRow()」)你知道如何將該語句添加到onclick事件中嗎? AddNewRow會返回創建的元素(在DOM中),那麼你可以做'vbscript:(AddNewRow())。scrollIntoView(false);' – 2010-02-03 11:03:10

+1

@Cesar Lopez:將代碼添加到你的'AddNewRow'函數只需用'Element'替換爲新創建的行的引用,例如'newRow.scrollIntoView(false)'。或者,你可以讓函數返回一個對新創建行的引用,並讓你的代碼像這個:'onclick =「vbscript:(AddNewRow())。scrollIntoView(false)」' – 2010-02-03 11:05:24

2

嘗試......

var div = document.getElementById('the_div'); 
div.scrollTop = div.scrollHeight; 

希望它能幫助。

+0

當可滾動區域大於偏移高度的2倍時,這會失敗。如果有的話應該是'div.scrollTop = div.scrollHeight''。 – 2010-02-03 10:56:56

+0

我的不好。 Thanx Andy E. – aefxx 2010-02-03 10:59:00