向javascript时钟添加时间

向javascript时钟添加时间,javascript,Javascript,我希望能够将指定的时间添加到javascript时钟,并使其保持更新。我已经设法把下面的东西扔在一起了 function leadTimer(leadTime) { var d1 = new Date (), d2 = new Date ( d1 ); d2.setMinutes ( d1.getMinutes() + leadTime ); currentHours = d2.getHours(); currentM

我希望能够将指定的时间添加到javascript时钟,并使其保持更新。我已经设法把下面的东西扔在一起了

    function leadTimer(leadTime) 
    {
      var d1 = new Date (),
      d2 = new Date ( d1 );
      d2.setMinutes ( d1.getMinutes() + leadTime );
      currentHours = d2.getHours();
      currentMins = d2.getMinutes();
      // Choose either "AM" or "PM" as appropriate
      var timeOfDay = ( currentHours < 12 ) ? "AM" : "PM";
      // Convert the hours component to 12-hour format if needed
      currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours;
      // Convert an hours component of "0" to "12"
      currentHours = ( currentHours == 0 ) ? 12 : currentHours;
      if (currentMins<=9) { currentMins="0"+currentMins; }
      if (currentHours<10) { currentHours="0"+currentHours; }
      $("#result").empty();
      $("#result").html(currentHours + ":" + currentMins + " " + timeOfDay)
      setInterval('leadTimer(leadTime)',10000)
}
功能前置计时器(前置时间)
{
var d1=新日期(),
d2=新日期(d1);
d2.setMinutes(d1.getMinutes()+交付周期);
currentHours=d2.getHours();
currentMins=d2.getMinutes();
//根据需要选择“上午”或“下午”
var timeOfDay=(当前小时数<12)?“AM”:“PM”;
//如果需要,将小时数组件转换为12小时格式
currentHours=(currentHours>12)?currentHours-12:currentHours;
//将小时数分量“0”转换为“12”
当前小时数=(当前小时数==0)?12:当前小时数;
如果(currentMins您几乎得到了它;要将函数作为第一个参数,请尝试将最后一行改为:

setInterval(function(){leadTimer(leadTime)}, 10000);

+1和澄清:文章中的代码不起作用的原因是,提供的字符串中的代码没有在函数的当前词汇上下文中进行计算,而闭包(如本回答中所使用的)确实绑定到包含
交付周期的[[scope chain]](封闭函数中的一个参数)。这种方法很有效,我想我在其他地方遇到了问题。在一个onload事件中,我调用leadTimer(20)。然后我有一个按钮,上面有+10。这会将计时器更改为+10,但会弹回到+20分钟的时间几秒钟,然后再弹回来。@user505055:听起来好像有两个相互冲突的函数在重复更新“result”元素(排序的竞争条件)。一个简单的修复方法是将“leadTime”设为全局变量,而不是函数参数,并单击按钮(和其他小部件)只需更新它的值。有更好的方法可以创建全局函数,但这应该是最简单的,您可能也希望增加显示函数的频率…maerics有您的解决方案。当您将字符串传递给setInterval时,它将在全局范围内进行计算,就像通过
new function()一样
,因此提前期未定义。通过传递函数,您可以保留对本地范围中定义的变量的闭包,以便在调用函数时,这些变量可用。