2011-04-19 48 views
0

我有一個帶有許多文本行的div。該div是高度限制,因此我有一個scroll。有沒有辦法在java script上滾動到指定的行。如何使用java腳本滾動到富文本框中的指定行

如果它已在html頁面我總是可以用書籤來做到這一點,如何使用豐富的文本框或任何html container與java腳本的幫助。

任何幫助非常感謝。

Nandish

回答

1

您在這裏遇到的問題是「行」的概念。既然你有一個在瀏覽器中繪製的盒子,它有一個給定的寬度(也許是動態的),並且裏面有文本,這些行依賴於包裝。

例如,如果寬度非常小,或者單行,如果寬度足以適合該文本,則文本:「hello world,現在我需要我的比薩餅」將是兩行。

我的意思是,「行」是一個相對於包裝本身的概念,所以即使在div內計數行也不可能

這是不同的,如果你的線由用戶定義,換行和回車,或與
或任何,但如果線條生成的包裝,這發生在渲染時間,你不知道它將如何發生。

如果你有一個固定的字體大小,你可以通過簡單的劃分盒子的高度/字體大小+行間距來推測行數。

但是,如果你的文字很豐富,它可以包含圖像等,這是行不通的。

另一種可能的解決方案是使用getClientRects(這個工作對我來說)

https://developer.mozilla.org/en/DOM/element.getClientRects

返回文本矩形對象的集合:

http://help.dottoro.com/ljgupwlp.php

希望這有助於一點,我以前曾經遇到這個問題兩次,而且它不像函數調用那麼簡單,你應該明白什麼是線條,包裝,clienrects,textrectangles,字體......

祝你好運!

0

如果你說的是<div contenteditable="true">,你可以試試這個:http://jsfiddle.net/cMMy5/

基本上它是div的scrollTop屬性。

$div = $('div'); 
$('button').click(function() { 
    $div.get(0).scrollTop = 10; 
}); 
+0

謝謝,我拿這個。我調整了一點我的像素和div大小的計算,我得到了我想要的 – 2011-04-20 04:29:34