首页 > 解决方案 > 带有动态键的 JS SetInterval 未清除

问题描述

以下代码设置了一个间隔。如果调用该功能,则应该首先清除现有间隔。然而事实并非如此。我唯一的理论是函数变量 key 不足以识别原始间隔。

您可以使用动态键调用并清除间隔吗?

function countdown(key, target, timestamp){
        
    clearInterval(key)
    key = setInterval(function(){
            
        if(timestamp <= 0){
            clearInterval(key)
        }
            
        timestamp = timestamp - 1
        target.text(timestamp)

    }, 1000)
}

激活该间隔有效

$("#somethhing").click(function(){
    countdown("testInterval", $("div.showTimer"), 12000)
})

但是,如果#somethhing再次单击它不会首先清除间隔。好像 usingkey不满足清除区间的 ID。有没有办法做到这一点,或者必须使用明确定义的变量设置所有间隔才能清除它们。

标签: javascriptfunctionkeysetintervalclearinterval

解决方案


问题是,当您重新分配时key, setInterval 返回的新值不会改变任何内容。您需要做的是访问变量以清除它。

您不能定义变量来自己清除它们。你必须保存身份证。您可以保存一个将您想要的名称映射到这些 id 的对象,如果您愿意,只需让函数更新该对象


推荐阅读