You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

检测滚动条是否在底部的代码存在问题,求排查及实现指定滚动功能

问题分析与修正方案

我来帮你拆解代码里的问题,顺便给出可运行的修正版本~

原代码的核心错误

你的条件判断逻辑完全写错了:

if ((this == [0].scrollHeight)) { ... }

这里有两个致命问题:

  • [0].scrollHeight是完全无效的语法,[0]单独使用没有指向任何元素,根本无法获取到滚动高度
  • 你要判断的是textarea是否滚动到底部,而不是把元素本身(this)和某个高度值做比较

正确的判断逻辑

要判断一个元素是否滚动到底部,需要结合三个属性:

  • scrollTop:元素已经向上滚动的像素数
  • clientHeight:元素的可见区域高度
  • scrollHeight:元素内容的总高度(包括不可见部分)

当 scrollTop + clientHeight >= scrollHeight 时,就说明元素已经滚动到底部了(用>=而不是严格等于,是为了兼容浏览器渲染的微小误差)。

修正后的完整代码

$("#inp").keyup(function () {
  // 判断当前textarea是否滚动到底部
  const isAtBottom = this.scrollTop + this.clientHeight >= this.scrollHeight;
  
  if (isAtBottom) {
    const outEl = $("#out")[0];
    // 让输出div滚动到底部
    outEl.scrollTop = outEl.scrollHeight;
  }
});

额外优化说明

我把$("#out")[0]缓存成了变量outEl,避免重复调用jQuery选择器,能稍微提升一点性能,当然如果你的页面元素不多,不缓存也不会有太大问题。

内容的提问来源于stack exchange,提问作者user9152964

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:09:09