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

如何修改带参数的JavaScript废弃event处理函数以消除警告?

问题描述

我有两个几乎完全相同的函数,其中一个带有参数:

function handleBlur() {
  const list = event.currentTarget.closest("#nav ul");
  if (!event.relatedTarget || !list.contains(event.relatedTarget)) {
    closeNav();
  }
}

function handleDropdownBlur(btn) {
  const list = event.currentTarget.closest("#nav ul");
  if (!event.relatedTarget || !list.contains(event.relatedTarget)) {
    closeDropdown(btn);
  }
}

给第一个函数添加event作为参数后,它正常运行且消除了废弃警告:

function handleBlur(event) {
  const list = event.currentTarget.closest("#nav ul");
  if (!event.relatedTarget || !list.contains(event.relatedTarget)) {
    closeNav();
  }
}

请问该如何修改第二个函数以消除废弃警告?我尝试把event作为第一个或第二个参数添加,但会破坏原有功能。这个函数的调用代码如下:

dropdowns.forEach((dropdown) => {
  const list = dropdown.querySelectorAll("li a");
  list[list.length - 1].addEventListener("blur", (event) => {
    handleDropdownBlur(dropdown.previousElementSibling);
  });
});
解决方案
  • 更新handleDropdownBlur函数,将event设为第一个参数,btn设为第二个参数:

    function handleDropdownBlur(event, btn) {
      const list = event.currentTarget.closest("#nav ul");
      if (!event.relatedTarget || !list.contains(event.relatedTarget)) {
        closeDropdown(btn);
      }
    }
    
  • 修改调用逻辑,在调用handleDropdownBlur时同时传入事件对象event和按钮参数:

    dropdowns.forEach((dropdown) => {
      const list = dropdown.querySelectorAll("li a");
      list[list.length - 1].addEventListener("blur", (event) => {
        handleDropdownBlur(event, dropdown.previousElementSibling);
      });
    });
    

这样修改后,既消除了隐式使用全局event导致的废弃警告,又完全保留了原有功能——函数现在明确接收所需的两个参数,逻辑和之前完全一致,只是参数传递更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:53:26