javascript - 跨浏览器 "jump to"/"scroll"textarea

标签 javascript html css

我有一个包含多行输入的文本区域,并且触发了一个 JavaScript 事件,需要我将文本区域滚动到第 345 行。

scrollTop 可以做我想做的事,但据我所知它是像素级的,我想要在行级上运行的东西。让事情变得复杂的是,afaik 再一次,不可能使文本区域不换行。

最佳答案

您可以使用 wrap 属性停止换行。它不是 HTML 4 的一部分,但大多数浏览器都支持它。
您可以通过将区域的高度除以行数来计算行的高度。

<script type="text/javascript" language="JavaScript">
function Jump(line)
{
  var ta = document.getElementById("TextArea");
  var lineHeight = ta.clientHeight / ta.rows;
  var jump = (line - 1) * lineHeight;
  ta.scrollTop = jump;
}
</script>

<textarea name="TextArea" id="TextArea" 
  rows="40" cols="80" title="Paste text here"
  wrap="off"></textarea>
<input type="button" onclick="Jump(98)" title="Go!" value="Jump"/>

在 FF3 和 IE6 中测试正常。

关于javascript - 跨浏览器 "jump to"/"scroll"textarea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155306/

相关文章:

html - 使用 CSS 包含自定义字体以使其与大多数浏览器兼容的最佳方法是什么?

javascript - 如何禁用下拉列表中的选项,以便箭头键跳到下一个可用选项?

html - 移动背景在 WordPress 中不起作用

html - 如何使 box-shadow 在添加边距的情况下工作?

javascript - 使用 jQuery 创建元素并添加样式属性

javascript - 当我们关闭脚本两次时会发生什么?

javascript - dotdotdot 在 flexslider 中显示 ... 之后的额外文本

javascript - 如何将数据从 html 发送到 Controller 并重新加载页面

javascript - 在javascript中过滤对象数组

javascript - 下拉菜单移动页面溢出