为javascript时钟添加时间

max*_*xum 2 javascript

我希望能够为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)
}
Run Code Online (Sandbox Code Playgroud)

我认为setInterval只会使用当前值,leadTime但我只是得到一个错误说leadTime未定义.

最终,我希望能够根据用户选择的内容来调用时钟.

mae*_*ics 5

你几乎得到了它; 首选的方法setInterval是给它一个函数作为第一个参数,所以尝试将你的最后一行更改为:

setInterval(function(){leadTimer(leadTime)}, 10000);
Run Code Online (Sandbox Code Playgroud)

  • +1和澄清:帖子中的代码不起作用的原因是*提供的字符串中的代码不在函数*的当前词法上下文中进行求值,而闭包(在此答案中使用)绑定到包含`leadTime`(封闭函数中的参数)的[[scope chain]]. (2认同)