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

为同类元素添加JavaScript交互失效,移除类时抛出undefined错误如何解决

问题根源

  • 你在事件回调中使用target获取触发元素,但点击箭头/取消按钮时实际触发事件的是内部的<i>图标,不是你绑定事件的外层容器。同时你将target重命名为和外层查询到的arrow/cancel同名的变量,直接覆盖了外层的容器元素引用,导致逻辑执行异常。
  • 取消操作的逻辑中没有同步重置箭头的激活状态,会导致二次点击箭头时交互失效。

修复后的完整JS代码

const containerDivs = document.querySelectorAll('.box.center');
containerDivs.forEach(containerDiv => {
    const leftContainer = containerDiv.querySelector('.left_container');
    const arrow = containerDiv.querySelector('.arr_container');
    const cancel =  containerDiv.querySelector('.cancel');

    arrow.addEventListener("click", () => {
        arrow.classList.add("active_arr");
        cancel.classList.remove("active_arr");
        if (leftContainer.classList.contains("off")) {
            leftContainer.classList.remove("off");
            leftContainer.classList.add("active");
        }
    });

    cancel.addEventListener("click", () => {
        cancel.classList.add("active_arr");
        arrow.classList.remove("active_arr");
        if (leftContainer.classList.contains("active")) {
            leftContainer.classList.remove("active");
            leftContainer.classList.add("off")
        }
    });
});

额外优化建议

你可以删除CSS中冗余的.arr_container .cancel选择器规则,避免样式冲突,该规则和后续单独定义的.cancel样式重复,不会生效还会干扰排查。

内容的提问来源于stack exchange,提问作者sajad.sharhani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:45:03