【问题标题】:Comparing 2 times with jquery与 jquery 比较 2 次
【发布时间】:2011-06-23 05:03:08
【问题描述】:

提前感谢您的帮助...

我正在尝试 (1) 生成表单的开始时间和结束时间,(2) 找到两者之间的差异,以及 (3) 将差异添加到新输入中。

这是我目前所拥有的:

<a href="#" id="starttime">Begin time</a>
<input id="starttimeinput" name="starttimeinput" type="text" value="">
<script>
    $("#starttime").click(function () {
         var begintime = event.timeStamp;
         $("#starttimeinput").val(begintime);
    });
</script>
<a href="#" id="endtime">end time</a>
<input id="endtimeinput" name="endtimeinput" type="text" value="">
<script>
    $("#endtime").click(function () {
         var endtime = event.timeStamp;
         $("#endtimeinput").val(endtime);
    });
</script>
<input id="totaltime" name="totaltime" type="text">
<script>
    $("#totaltime").focus(function () {
       var begintime = $("#starttimeinput").val();
       var endtime = $("#endtimeinput").val();
       var totaltime = endtime - begintime;
       $("#totaltime").val(totaltime); 
     });     
</script>

第一部分起作用(将时间戳输入到开始时间和结束时间输入中)。我以前从未使用过数字,也无法弄清楚第二部分。出现的结果是“NaN”。

这可能有助于了解点击链接之间的时间应该在 30 秒左右...

非常感谢你们在我不必发帖的情况下回答了我这么多问题的任何帮助!

【问题讨论】:

  • 第一部分对我不起作用,甚至会产生错误。不过,最后一个输入为 0。如果我添加事件参数来单击回调函数,一切都会像你描述的那样工作。

标签: javascript jquery math time parseint


【解决方案1】:

您需要parseInt() 将时间返回,否则它们只是字符串(由.val() 返回)。

$("#totaltime").focus(function () {
    var begintime = parseInt($("#starttimeinput").val(), 10),
        endtime = parseInt($("#endtimeinput").val(), 10),
        totaltime = endtime - begintime;
    $("#totaltime").val(totaltime); 
 });

就个人而言,我宁愿自己存储begintimeendtime 值,而不是在文本输入中(为什么用户需要查看它们呢?)。像这样:

var begintime,
    endtime;
$("#starttime").click(function (event) {
     begintime = event.timeStamp;
     //$("#starttimeinput").val(begintime);
});

$("#endtime").click(function (event) {
     endtime = event.timeStamp;
     //$("#endtimeinput").val(endtime);
});

$("#totaltime").focus(function () {
    $("#totaltime").val(endtime - begintime); 
});

附带说明,我建议将您的 jQuery 代码从内联 &lt;script&gt; 标记中移出并移到外部 JS 文件中。这使得标记和 JS 更易于维护。只需将所有 JS 代码包装在文档就绪处理程序中即可:

$(document).ready(function () {
    /* your code here */
});

或者,更简洁地说,

$(function () {
    /* your code here */
});

【讨论】:

  • 感谢您的回答,但不幸的是,当我专注时,它没有返回 NaN 而不是显示任何内容...
  • @Andy:查看我的编辑。看起来您(因此,我)省略了事件回调参数event
  • 我相信减号操作会自动将字符串转换为数字。
  • 好吧...这就是我一直在寻找的东西,谢谢你们是冠军。
  • @Box9:你是对的,但我看不出在这种情况下使用类型强制而不是真正的解析的充分理由。那么,我想知道为什么 OP 看到 NaN...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 2011-06-10
  • 2013-05-06
  • 1970-01-01
相关资源
最近更新 更多