Javascript JS时间跟踪器未按预期工作

Javascript JS时间跟踪器未按预期工作,javascript,jquery,html,Javascript,Jquery,Html,我有一个主要使用javascript的计时器,目前启动/停止功能运行良好。当用户点击“停止”按钮时,它从#time元素中提取时间,将其转换为十进制值并更新隐藏的#counter元素。例如,1个半小时将转换为1.50小时 我的问题是,我还想让用户手动编辑时间,所以我有一个小插件,是为了做到这一点而创建的 有两个问题: 如果用户通过双击元素并调整来手动添加时间,然后单击save,则#counter元素尚未更新,因此它将时间提交为0 如果用户手动设置时间,然后点击开始按钮,则时钟从0开始,而不是从他们

我有一个主要使用javascript的计时器,目前启动/停止功能运行良好。当用户点击“停止”按钮时,它从#time元素中提取时间,将其转换为十进制值并更新隐藏的#counter元素。例如,1个半小时将转换为1.50小时

我的问题是,我还想让用户手动编辑时间,所以我有一个小插件,是为了做到这一点而创建的

有两个问题:

  • 如果用户通过双击元素并调整来手动添加时间,然后单击save,则#counter元素尚未更新,因此它将时间提交为0
  • 如果用户手动设置时间,然后点击开始按钮,则时钟从0开始,而不是从他们指定的时间开始
  • 我这里有一把JS小提琴:

    在该小提琴的JS块底部,您将看到:

    //implement plugin
            $('span#time').editable().on('editsubmit', function (event, val) {
                console.log('text changed to ' + millisecondsToHours(val));
            });
    
    我认为这是每次用户手动输入时间时触发的事件

    问题:如果有人手动输入时间,它会自动用转换后的值更新#计数器字段,如果他们按start,它将从该时间开始,我该如何设置


    我尝试的内容:我尝试使用
    格式(时间)
    函数,当前它试图将值打印到控制台,但我没有得到结果

    我在
    clsStopwatch
    类上创建了一个覆盖方法,如下所示:

    this.override = function(time) {
            lapTime = time;
    }
    
    这将更新
    lapTime
    ,以毫秒为单位传递时间。为此,我创建了一个接受字符串的新函数:

    function stringToMilliseconds(str) {
            var a = str.split(':'); // split it at the colons
            var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 
            return seconds * 1000;
    }
    
    这将返回id
    #time
    元素范围中编辑字符串的毫秒数

    最后,我更新了submit editable事件以调用覆盖:

    $('span#time').editable().on('editsubmit', function (event, val) {
            x.override(stringToMilliseconds(val));
    });
    
    以下是最新的


    希望能有所帮助。

    @Derek没问题,如果您还需要什么,请告诉我。马特