Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 减法两次,并在第三个文本框中自动显示结果_Javascript_Jquery_Date_Time - Fatal编程技术网

Javascript 减法两次,并在第三个文本框中自动显示结果

Javascript 减法两次,并在第三个文本框中自动显示结果,javascript,jquery,date,time,Javascript,Jquery,Date,Time,Textbox3显示过程的开始时间,TextBox4显示同一过程的结束时间。我想它,如果文本框是在一个12小时的时钟显示在文本框的am/pm标签。然后在Textbox2中,它将以小时和分钟显示Textbox3和Textbox4之间的差异 例如: In Time: 9:00 AM Out Time : 6:00 PM 然后结果将显示在此处 Approx Time : 9 如果输入是这样的 In Time: 9:00 AM Out time: 6.05 PM 那么结果应该是 Approx T

Textbox3显示过程的开始时间,TextBox4显示同一过程的结束时间。我想它,如果文本框是在一个12小时的时钟显示在文本框的am/pm标签。然后在Textbox2中,它将以小时和分钟显示Textbox3和Textbox4之间的差异

例如:

In Time: 9:00 AM
Out Time : 6:00 PM
然后结果将显示在此处

Approx Time : 9 
如果输入是这样的

In Time: 9:00 AM
Out time: 6.05 PM
那么结果应该是

Approx Time: 9:05

JavaScript代码:

    function calculateTime() {

        var valuestart = $("[id$=TextBox3]").pickatime({ interval: 1 }).val();
        var valuestop = $("[id$=TextBox4]").pickatime({ interval: 1 }).val();


        var timeStart = new Date("01/01/2010 " + valuestart);
        var timeEnd = new Date("01/01/2010 " + valuestop);

        var difference = timeEnd - timeStart;
        var diff_result = new Date(difference);

        var hourDiff = diff_result.getHours();

        document.getElementById("TextBox2").innerHTML = hourDiff;        

   }
    $("select").change(calculateTime);
    calculateTime();
我尝试了上面的代码,但无法得到结果。我是JavaScript新手。所以请帮我这么做

得到这个错误

错误图像


我编辑了我的答案,因为前一个答案效率低下。

要获取时间
和时间
之间的差异,请按照以下说明进行操作:

首先,让我们获取
在时间内
在时间外
文本框的值:

// Declare the variables
var valuestart = document.getElementById("in-time-textbox").value,
    valuestop = document.getElementById("in-time-textbox").value;

/* I left it the same as you had it */
var timeStart = new Date("01/01/2010 " + valuestart),
    timeEnd = new Date("01/01/2010 " + valuestop);
  • 我不使用jQuery,因此您使用的
    pickatime()
    方法对我不可用
  • 因此,我将假设这些值是在它们各自的文本框中键入的,就像在普通文本框中一样

然后,让我们继续计算:

/* Determine the value of the variable via a conditional ternary operator */
var hourDiff = (((timeEnd.getHours() - timeStart.getHours()) > 0) ?
               (timeEnd - timeStart) / 3600000 + " Hours" :
               (((timeEnd.getMinutes() - timeStart.getMinutes()) > 0) ?
               (timeEnd.getMinutes() - timeStart.getMinutes()) + " Minutes" :
               (timeEnd.getSeconds() - timeStart.getSeconds()) + " Seconds"));

/* Alternatively, you can do this with an If/Else if/Else statement */
if ((timeEnd.getHours() - timeStart.getHours()) > 0) {
    hourDiff = (timeEnd - timeStart) / 3600000 + " Hours";  // 1 Hour = 3.6 * 10^6 ms
}
else if ((timeEnd.getMinutes() - timeStart.getMinutes()) > 0) {
    hourDiff = (timeEnd.getMinutes() - timeStart.getMinutes()) + " Minutes";
}
else {
    hourDiff = (timeEnd.getSeconds() - timeStart.getSeconds()) + " Seconds";
}
  • 当涉及到基于不同条件设置变量时,我更喜欢使用
    三元运算符
    ,因为它更简洁

  • 我还提供了一个
    if/else if/else
    版本,以防您不熟悉


最后,我们可以输出结果:

// Output the result
document.getElementById("TextBox2").value = hourDiff; /* I left the ID the same */

代码笔:
我已经创建了一个更好的、更直观的表示,它可以按需要工作。

如果您不提供您尝试过的代码,这太难了。假设您有3个文本框,分别id为
txt1
txt2
txt3
txt3
是我们将输出结果的地方

对于正常数字,您可以对某些按钮的
onclick
事件使用以下功能

function sum() {
    var txtFirstNumberValue = document.getElementById('txt1').value;
    var txtSecondNumberValue = document.getElementById('txt2').value;
    var result = parseInt(txtFirstNumberValue) - parseInt(txtSecondNumberValue);

    if(!isNaN(result)){
        document.getElementById('txt3').value = result;
    }
}
如果第二个字段包含日期,则可以使用以下代码获取小时差。如果要再次计算日期数,请将其除以24

  var resultInHours = Math.abs(txtFirstNumberValue - txtsecondNumberValue ) / 36e5;

请尝试以下代码:

function calculateTime() {

    var valuestart = $("[id$=TextBox3]").pickatime({ interval: 1 }).val();
    var valuestop = $("[id$=TextBox4]").pickatime({ interval: 1 }).val();


    var timeStart = new Date("01/01/2010 " + valuestart);
    var timeEnd = new Date("01/01/2010 " + valuestop);

    var difference = timeEnd - timeStart;
    var diff_result = new Date(difference);

    var hourDiff = diff_result.getHours();

    document.getElementById("TextBox2").value = hourDiff;        

}

$("select").change(calculateTime);
calculateTime();

你能展示一些代码吗?展示你的尝试。因此,这不是一个可以转储需求并获得完整代码的地方。参见and.SO是为了解决特定问题,而不是让其他人为您编码。而不是
var hourDiff=diff_result.getHours()尝试
timeEnd.getHours()-timeStart.getHours()
。另外,如果您使用jQuery,请保持DOM访问常量。
$()
文档。
@Rajesh已经使用了您的建议,但仍然无效1。改进命名约定。2.您不能直接对时间值(hh:mm)执行算术运算。我认为输入文本元素需要设置它们的“值”,而不是它们的“innerHTML”。我可以复制你的代码并给出一个完整的答案吗?@Kusum请查看我的最新答案。它将指导你一步一步,我还包括了一个代码笔,供你查看和测试。