我有div
,其中包含许多文字行。 div是高度限制的,因此我有一个scroll
。在java script
中是否有一种方法可以滚动到指定的行。
如果它在html
页面中,我可以随时使用书签,如何在富文本框或任何html container
的帮助下使用java脚本。
任何帮助都非常感激。
Nandish
答案 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;
});