【问题标题】:How to show Time With changing minutes and seconds?如何通过更改分钟和秒来显示时间?
【发布时间】:2017-11-10 11:52:59
【问题描述】:

我需要以动态的方式在文本类型输入中显示时间,也就是说它是不断变化的。为此,他们建议我使用以下功能,但我未能正确显示时间。我做错了什么?

Javascript

function new_clock(){ 

  clock = new Date() 
  hour =   clock.getHours() 
  minutes = clock.getMinutes() 
  seconds = clock.getSeconds() 

  print_clock= hour + " : " + minutes + " : " + seconds 

  document.form_clock.clock_txt.value = print_clock

  setTimeout("new_clock()",1000)

}

HTML

 <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
 <section onload="new_clock()"> 
   <form name="form_clock"> 
     <input type="text" name="clock_txt" size="10" id="clock_txt"> 
   </form>  

选择的响应运行良好,但是在实现时钟时,它会导致模块操作加载速度慢得多。

Javascript

 var today = moment().format('YYYY-MM-DD');

function new_clock(){ 
clock = new Date() ;
hour =   clock.getHours(); 
minutes = clock.getMinutes() ;
seconds = clock.getSeconds() ;
print_clock= today + " " + hour + ":" + minutes + ":" + seconds;
$("#fecha_registro").val(print_clock);
setInterval(new_clock, 1000);

}

new_clock();

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这样做https://jsfiddle.net/u1Lkd0ra/

    在 JavaScript 中

    function new_clock(){ 
    
    clock = new Date(); 
    hour =   clock.getHours(); 
    minutes = clock.getMinutes(); 
    seconds = clock.getSeconds(); 
    
    print_clock= hour + " : " + minutes + " : " + seconds; 
    
    document.form_clock.clock_txt.value = print_clock;
    
    
    setTimeout(new_clock,1000);
    
    }
    
    new_clock();
    

    和 HTML

    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    
    
     <form name="form_clock"> 
     <input type="text" name="clock_txt" size="10" id="clock_txt"> 
     </form> 
    

    【讨论】:

    • 也许可以向 OP 和未来的观众解释它是如何工作的?
    【解决方案2】:

    使用 setInterval 方法代替 setTimeout。如下所示的代码:

    setInterval(function() {
      var clock = new Date();
      var hour =   clock.getHours();
      var minutes = clock.getMinutes();
      var seconds = clock.getSeconds();
      var print_clock = hour + " : " + minutes + " : " + seconds;
      console.log(print_clock);
    }, 1000);
    

    【讨论】:

      【解决方案3】:

      我还没有真正接触过 javascript,但 setTimeout(new_clock, 1000) 会起作用吗?

      这是基于我在这里阅读的内容: javascript setTimeout() not working

      编辑: 哎呀!我知道了! https://jsfiddle.net/7wkw14wd/

      所以基本上,函数是正确的...... 超时的事情...一旦计时器到了,将调用 new_clock()... 但是由于超时的东西在函数中,所以你需要在递归的连锁反应开始之前启动它!

      【讨论】:

      • 输入中没有显示任何内容,所以我不确定,尽管根据谷歌它应该可以工作......
      • 我意识到它正在变慢,因为在上一个答案中,整个页面每秒都会被重新启动,或者至少我是这么认为的,我按照你的答案修改了它,很好,谢谢你
      【解决方案4】:

      https://jsfiddle.net/chj51hc3/1/

      HTML:

      <section id="mySection"> 
        <form name="form_clock"> 
          <input type="text" name="clock_txt" size="10" id="clock_txt"> 
        </form>
      </section>
      

      Javascript:

      $("#mySection").ready(function new_clock() { 
          clock = new Date() ;
          hour =   clock.getHours(); 
          minutes = clock.getMinutes() ;
          seconds = clock.getSeconds() ;
          print_clock= hour + " : " + minutes + " : " + seconds;
          $("#clock_txt").val(print_clock);
          setInterval(new_clock, 1000);
      });
      

      对于setTimeout,您需要指定一个函数而不是它的名称。

      使用.ready() 而不是onload

      请使用semicolons

      编辑:为您的代码结构更新小提琴

      【讨论】:

      • @CristianOx21 很高兴。
      • 我在我的表单上测试过,效果很好。但是,这会导致模块的响应速度要慢得多,例如,如果我想选择一个 select 的选项,则需要几秒钟。你知道为什么听起来吗?我将结果保存在数据库中,因为在查阅记录时秒数会产生很大的不同
      • @CristianOx21 我不确定你想做什么,你能提供一段代码,或者你的模块的图像吗?有时,在调试器中稍微检查一下就可以解决很多问题
      • 对我来说很好jsfiddle.net/chj51hc3/2你是否正在做任何处理来获取你的选择值?
      • 是的,我正在使用属性 .change 加载选择,执行此操作时我调用了一个 php 函数来执行此操作,但我没有遇到问题,直到我添加了时钟,即奇怪,加载模块的时候是正常的,然后过了10秒就变慢了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      相关资源
      最近更新 更多