如何使用java脚本滚动到富文本框中的特定行

时间:2011-04-19 08:29:12

标签: javascript html dom

我有div,其中包含许多文字行。 div是高度限制的,因此我有一个scroll。在java script中是否有一种方法可以滚动到指定的行。

如果它在html页面中,我可以随时使用书签,如何在富文本框或任何html container的帮助下使用java脚本。

任何帮助都非常感激。

Nandish

2 个答案:

答案 0 :(得分:1)

你在这里遇到的问题是概念“行”。由于您在浏览器中绘制了一个框,具有给定的宽度(可能是动态的),并且其中包含文本,因此这些行取决于包装。

例如,文本:“hello world,我现在需要我的披萨”如果宽度非常小,则为两行,如果宽度足以适合此文本,则为单行。

我的意思是,“line”是一个相对于包装本身的概念,所以即使计算div中的行也是不可能的

如果您的线条由用户定义,使用换行符和回车符,或者使用
等等,但是如果线条是由换行生成的,则会发生这种情况,这在渲染时会发生,并且您有不知道会怎么样。

如果你有一个固定的字体大小,你可以通过简单划分框/字体大小+行之间的空格来推测行数。

但是,如果文本很丰富,它可能包含图像等,这将无效。

另一种可能的解决方案是使用getClientRects(这对我有用)

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

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

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

希望这有点帮助,我之前遇到过这个问题两次,并且它不像函数调用那么容易,你应该理解什么是线条,包装,clienrects,textrectangles,字体......

祝你好运!

答案 1 :(得分:0)

如果您的意思是<div contenteditable="true">,可以尝试:http://jsfiddle.net/cMMy5/

基本上它是div的scrollTop属性。

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