使用变量名清除setTimeout

时间:2014-02-20 00:07:04

标签: jquery variables settimeout cleartimeout

我有一个简单的应用程序,它使用多个同步计时器来控制何时显示某些按钮。单击该按钮将隐藏它,并重置计时器。很基本的。我当然不能离开它......

某些按钮会干扰其他按钮的概念功能。我需要清除我设置的一些定时器,用于在单击其他某些按钮时显示按钮。我没有问题让我的按钮显示和隐藏计时器。问题是在时间到期之前清除计时器。

var addMuTrfOrOIATimer;
var timerName;

funcAddTimer("addMuTrfOrOIATimer", '#trafficOrOIA', muTrfOrOIATimer);

$('#muInACall').click(function () {
                muInACall = true;
                $('#muInACall').hide();
                funcAddTimer("addMUNotesTimer", '#muAddNotes', muAddNotesTimer);
                funcAddTimer("addMUStartTransportTimer", '#muStartTransport', muStartTransportTimer);
                if (selfOrDisClear === 1) {
                    funcAddTimer("addMUClearSelfTimer", '#muClearSelf', muSelforDisClearTimer);
                } else {
                    funcAddTimer("addMUDisClearTimer", '#muDisCLearUnit', muSelforDisClearTimer);
                }
                funcClearTimer("addMuTrfOrOIATimer");
            });

所以所有的东西都被调用了。您可以看到我尝试清除函数外部的计时器集。

var funcAddTimer = function (timerName, buttonName, timeToHide) {
    console.log("Starting timer " + timerName);
    timerName = setTimeout(function () {
        $(buttonName).show();
    }, timeToHide);
};

以上你可以看到我将定时器的名称传递给timerName,然后在调用该函数时下面我再次传递我要清除的定时器作为timerName。在我的控制台中,名称现在正在正确传递,但计时器未被清除。

var funcClearTimer = function (timerName) {
    console.log("About to clear timer " + timerName);
    clearTimeout(timerName);
}

非常感谢任何帮助。

0 个答案:

没有答案