Javascript:未捕获类型错误:引用创建的对象时无法调用未定义的方法“add”

Javascript: Uncaught TypeError: Cannot call method 'add' of undefined when referencing created object

本文关键字:调用 未定义 方法 add 对象 类型 错误 引用 Javascript 创建      更新时间:2023-09-26

首先,我对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方法,但是我收到此错误:" 未捕获的类型错误: 无法调用未定义的方法'add'

">

我在这方面明显做错了什么吗?和/或快速修复,或者我将不得不重新考虑我的方法吗?

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

提前感谢,理查

计时器是函数作用域中的一个变量。如果要创建对计时器的全局引用,请从该函数中删除计时器,或者删除该var关键字。