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

移动端使用JavaScript限制字符数出错,求问题排查指导

移动端文本字符限制代码问题修复

你的代码存在以下核心问题:

  • 函数调用错误:cartersLimit === true是布尔值比较操作,不是执行函数,正确调用方式应为cartersLimit()
  • 未处理窗口尺寸变化:仅在页面加载时判断一次屏幕宽度,用户调整窗口大小(如手机旋转)时不会重新触发文本限制逻辑
  • 丢失原始文本:直接修改innerText会覆盖原始内容,当屏幕从移动端切回桌面端时,无法恢复完整文本
  • 选择器使用不当:querySelectorAll('#descricao-script')中id是页面唯一标识,若需作用于多个元素应改用class选择器(如.descricao-script),单个元素则用querySelector即可

修复后的代码示例:

<script>
  // 存储需要处理的元素,改用class选择器适配多个元素
  const descricaoElements = document.querySelectorAll('.descricao-script');
  const LIMIT = 135;
  // 提前保存每个元素的原始文本,避免修改后丢失
  const originalTexts = Array.from(descricaoElements).map(el => el.innerText);

  function handleTextLimit() {
    const isMobile = document.body.clientWidth < 440;
    descricaoElements.forEach((el, index) => {
      if (isMobile) {
        const aboveLimit = originalTexts[index].length > LIMIT;
        const dotOrEmpty = aboveLimit ? '...' : '';
        el.innerText = originalTexts[index].substring(0, LIMIT) + dotOrEmpty;
      } else {
        // 桌面端恢复原始完整文本
        el.innerText = originalTexts[index];
      }
    });
  }

  // 页面加载时执行一次
  handleTextLimit();
  // 监听窗口大小变化,实时调整文本显示
  window.addEventListener('resize', handleTextLimit);
</script>

关键优化说明:

  • 提前保存所有元素的原始文本,确保切换屏幕尺寸时能恢复完整内容
  • 将移动端/桌面端的文本显示逻辑整合到一个函数中,统一处理
  • 添加resize事件监听,窗口大小变化时自动更新文本状态
  • 改用class选择器适配多个需要限制的元素,单个元素场景可替换为querySelector('.descricao-script')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:35:24