Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在DocumentReady中使用javascript类_Javascript_Jquery_Counter - Fatal编程技术网

如何在DocumentReady中使用javascript类

如何在DocumentReady中使用javascript类,javascript,jquery,counter,Javascript,Jquery,Counter,我将此倒计时脚本包装为位于单独文件中的对象 然后,当我想设置计数器时,倒计时类中的超时函数无法再次找到我在文档中已设置好的对象。 我认为文档中设置的所有内容都已准备就绪,并已转换到该范围, 但是,可以在其他文档就绪中调用函数 是否有人能解决我如何设置多个计数器斜杠对象的问题。 或者这些基本的javascript类必须成为插件吗 这是一节课 function countdown(obj) { this.obj = obj; this.Div = "c

我将此倒计时脚本包装为位于单独文件中的对象

然后,当我想设置计数器时,倒计时类中的超时函数无法再次找到我在文档中已设置好的对象。

我认为文档中设置的所有内容都已准备就绪,并已转换到该范围, 但是,可以在其他文档就绪中调用函数

是否有人能解决我如何设置多个计数器斜杠对象的问题。 或者这些基本的javascript类必须成为插件吗

这是一节课

  function countdown(obj)
{
    this.obj        = obj;
    this.Div        = "clock";
    this.BackColor      = "white";
    this.ForeColor      = "black";
    this.TargetDate     = "12/31/2020 5:00 AM";
    this.DisplayFormat  = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
    this.CountActive    = true;

    this.DisplayStr;

    this.Calcage        = cd_Calcage;
    this.CountBack      = cd_CountBack;
    this.Setup      = cd_Setup;
}

function cd_Calcage(secs, num1, num2)
{
  s = ((Math.floor(secs/num1))%num2).toString();
  if (s.length < 2) s = "0" + s;
  return (s);
}
function cd_CountBack(secs)
{
  this.DisplayStr = this.DisplayFormat.replace(/%%D%%/g,    this.Calcage(secs,86400,100000));
  this.DisplayStr = this.DisplayStr.replace(/%%H%%/g,       this.Calcage(secs,3600,24));
  this.DisplayStr = this.DisplayStr.replace(/%%M%%/g,       this.Calcage(secs,60,60));
  this.DisplayStr = this.DisplayStr.replace(/%%S%%/g,       this.Calcage(secs,1,60));

  //document.getElementById(this.Div).innerHTML = this.DisplayStr;

  $('#'+this.Div).text(this.DisplayStr);
  $('#tel').text(parseInt( $('#tel').text() )+1);


  if (this.CountActive) setTimeout(this.obj +".CountBack(" + (secs-1) + ")", 990);
}
function cd_Setup()
{
    var dthen   = new Date(this.TargetDate);
    var dnow    = new Date();
    ddiff       = new Date(dthen-dnow);
    gsecs       = Math.floor(ddiff.valueOf()/1000);
    this.CountBack(gsecs);
}
firebug说它在超时功能中出错


谢谢,Richard在本地范围内定义了cd1。setTimeout将在window[global]作用域中运行作为参数1传递的函数,在您的情况下,window.cd1是未定义的

您的问题的解决方案是使cd1成为一个全局变量。[删除cd1声明中的“var”]



离题:我建议您考虑使用匿名函数,因为它们有时会使您的代码更加美观/易读。

,您提供给我们的信息没有为我们的成员提供有用的上下文来帮助您。你也可以发帖子说“我的程序不起作用,救命。”。老实说,我并不是想表现得不尊重别人。所以会员们不知道在你们的计划中“这”是什么定义?目前,我认为
this==window
的计算结果会是真的吗?对不起,请稍等,我会发布我不知道的关于var的全部内容,谢谢,我正在查看jquery插件计数器页面,如果你能推荐一个很棒的,我只需要在下一个ajax调用之前进行计算。如果不知道,也可以。然后我必须检查所有这些。
$(document).ready(function() { 
  var cd1 = new countdown('cd1');
  cd1.Div = "clk";
 cd1.TargetDate = "08/15/2010 8:00 PM";
  cd1.DisplayFormat = "%%D%% days, %%H%% hours, %%M%% minutes, %%S%% seconds until event   AAA happens"; 
 cd1.Setup();