Javascript执行两个函数addEventlistener并延迟其中之一

标签 javascript settimeout addeventlistener

在我的网站上,我有一个执行以下代码的 addEventListener。变量/常量的定义如下:const header_search_form = document.querySelector('.header-search-form');

我需要的是这部分代码延迟2秒执行:document.getElementById("header-search-field-input").focus();。其他代码应该正常执行,同时也遵守 if 条件。我已经尝试过一些事情,但是没有用。

header_search_button.addEventListener('click', onClickOpensearch);

function onClickOpensearch(){

if(header_search_container.classList.contains('open')){
    header_parent.classList.remove('open');
    header_search_background.classList.remove('open');
    document.getElementById("header-search-field-input").blur();
    document.getElementById("header-search-field-input").value = "";
} else {
    header_parent.classList.add('open');
    header_search_background.classList.add('open');
    document.getElementById("header-search-field-input").focus();
}
}

如果有人能告诉我如何更改代码,那就太好了!

最佳答案

这应该可以立即生效:

} else {
    header_parent.classList.add('open');
    header_search_background.classList.add('open');
    setTimeout(function(){
       document.getElementById("header-search-field-input").focus();
    }, 2000)
}

使用箭头函数的相同内容:

} else {
    header_parent.classList.add('open');
    header_search_background.classList.add('open');
    setTimeout(() => {
       document.getElementById("header-search-field-input").focus();
    }, 2000)
}

请注意,它可能会阻止用户交互 2 秒,这不是最佳实践中的最佳做法。

关于Javascript执行两个函数addEventlistener并延迟其中之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60676752/

相关文章:

javascript - Nuxt js自定义光标事件监听器在路由更改后不起作用

javascript - html注入(inject)中的jQuery脚本执行顺序

javascript - 再次调用 setTimeout 停止第一个实例

javascript - 仅在上传时显示图像(xhr.addEventListener)

javascript - 如何在循环中的 Coffeescript 中使用 setTimeout

Javascript使函数一个接一个地执行

JavaScript倒计时弹出窗口

javascript - 使用 defaultExtension 为 systemjs 配置 Angular2 库

javascript - 映射到命名空间模块时将 prop 作为模块名称传递

javascript math.round 和 math.floor 在 IE 和 Opera 中工作正常,但在 Chrome、Safari 或 Firefox 中不行。得到 NaN