Javascript 减法两次,并在第三个文本框中自动显示结果
Textbox3显示过程的开始时间,TextBox4显示同一过程的结束时间。我想它,如果文本框是在一个12小时的时钟显示在文本框的am/pm标签。然后在Textbox2中,它将以小时和分钟显示Textbox3和Textbox4之间的差异 例如: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
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请查看我的最新答案。它将指导你一步一步,我还包括了一个代码笔,供你查看和测试。