0

首先,我对 Javascript 的 OOP 方面并不是很熟悉,所以我可能需要回到绘图板并重新编写 javascript,因为我试图做的事情可能是不可能的,所以请让我知道如果那是这样的。我一直在寻找解决方案一段时间,但无法完全找到相同的问题,我可以理解我应该改变什么。

我正在使用这篇文章中定义的类:https ://stackoverflow.com/a/7798773/1027442 。

当站点上的组合框发生更改 (onChange) 时,它会调用一个函数,该函数调用下面的函数以在页面上显示一个反馈框:

var display_ajax_feedback = function (){

document.getElementById('ajax_feedback').style.display = 'block';

/*if(document.getElementById('ajax_feedback_active').value == "active"){*/
if(timer){
    timer.add(5000);
    }
else{
    var timer = new Timer(function() { // init timer with 5 seconds
            document.getElementById('ajax_feedback').style.display = 'none';
        }, 5000);

    /*document.getElementById('ajax_feedback_active').value ="active";*/
    }

}

这个想法是“ajax_feedback”元素显示 5 秒然后消失,除非再次调用它,在这种情况下添加 5 秒。

使用此代码时,if(timer) 行始终返回 false,因此计时器不会按时添加,而是再次调用该对象。

我引入了额外的 ajax_feedback_active 元素来强制调用 timer.add 方法,但我得到了这个错误:“Uncaught TypeError: Cannot call method 'add' of undefined”

我有什么明显做错了吗?和/或快速修复还是我将不得不重新考虑我的方法?

如果您需要任何进一步的信息,请告诉我。

在此先感谢,理查德

4

1 回答 1

0

您的计时器是函数范围内的变量。如果您想创建对它的全局引用,或者摆脱该var关键字,请从该函数中取出计时器。

于 2012-05-20T10:26:36.007 回答