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

Google Sheets App Script表单multiple select选中后自动上移问题求助

问题根因

你代码中通过cloneNode克隆整个下拉节点再替换原节点的hack操作,是导致下拉框滚动位置重置的核心原因。该操作会销毁原select元素的所有运行时状态(包括滚动偏移、焦点状态等),触发整体重渲染,才会出现选中后自动回到顶部的问题。

修复方案

直接移除这段冗余的节点替换逻辑即可,同时建议直接操作option元素的selected属性(DOM实时属性,比操作attribute更稳定),修复后的完整代码如下:

// 允许多选下拉框无需按住ctrl点击即可切换选项选中状态
window.onmousedown = function (e) {
    const el = e.target;
    if (el.tagName.toLowerCase() === 'option' && el.parentNode.hasAttribute('multiple')) {
        e.preventDefault();
        // 直接切换选中状态,操作DOM property比修改attribute兼容性更好
        el.selected = !el.selected;
    }
}

可选优化建议

  • 如果你的页面只有特定几个select需要实现该多选逻辑,建议将事件绑定到对应select元素上,避免全局绑定window事件影响其他元素
  • 可以增加事件委托的判断逻辑,避免误触发其他区域的点击事件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:45:05