Javascript 基于2个输入的计算

Javascript 基于2个输入的计算,javascript,input,Javascript,Input,我试图在表单中添加一个字段,用户可以使用timePicker选择班次的开始时间和结束时间,然后用其他两个输入字段之间的差异填充名为total_hours的字段 function findTotalHours(){ var start_time = parseInt(document.getElementById("start_time").value); var end_time = parseInt(document.getElementById("end_time").value); va

我试图在表单中添加一个字段,用户可以使用timePicker选择班次的开始时间和结束时间,然后用其他两个输入字段之间的差异填充名为total_hours的字段

function findTotalHours(){

var start_time = parseInt(document.getElementById("start_time").value);
var end_time = parseInt(document.getElementById("end_time").value);
var sub_start = start_time.substr(0,1);
var sub_end = end_time.substr(0,1);
var result = sub_end - sub_start;
document.getElementById('total_hours').value = result; 
}
我得到了以下控制台错误:

未捕获的TypeError:对象NaN没有方法“substr”

未捕获的TypeError:对象9没有方法'substr'var sub_start= 开始时间。子项0,1

timePicker将时间存储为hh:mm格式,因此我现在尝试删除分钟和冒号,以便在考虑如何处理分钟之前,尝试显示总小时数

任何关于如何修复此代码的建议,以及可能如何处理该格式的会议记录,都将不胜感激


我建议您首先读取两个输入的值,然后将它们解析为日期对象,然后执行减法I include absolute函数来补偿切换的值。以下是一个可能的解决方案:

var date_1 = document.getElementById("date_1").value;
var date_2 = document.getElementById("date_2").value;

var d_1 = Date.parse(date_1);
var d_2 = Date.parse(date_2);
var diff_milliseconds = Math.abs(d_2 - d_1);
var diff_hours = diff_milliseconds / 1000 / 60 / 60;

alert(diff_hours + " hours difference");
希望有帮助

问候,, Ralfe

通过使用parseInt,您可以将两个输入标记中的值转换为数字

你得到了

未捕获的TypeError:对象NaN没有方法“substr”

错误,因为parseInt之后返回的值不是数字,这意味着开始时间输入的值无效

你得到了

未捕获类型错误:对象9没有方法'substr'var sub_start=start_time.substr0,1

错误,因为substr是字符串原型方法,并且开始时间和结束时间是数字。您可能想使用

var sub_start=开始时间+.substr0,1; 相反。

试试这个

<script type="text/javascript">
    function findTotalHours() {

        var start_time = document.getElementById("start_time").value;
        var end_time = document.getElementById("end_time").value;

        var sub_start = start_time.substr(0, 2);    //Make sure date formate will be HH like 03,09 not 3,9
        var sub_end = end_time.substr(0, 2);
        var result = parseInt(sub_end) - parseInt(sub_start);     

        document.getElementById('total_hours').value = result;
    }


  </script> 

您能提供完整的JSFIDLE示例吗?start_time和end_time输入包含下面回答dudeHi@danielsmile的错误数字。我在下面给了您一个解决方案,但我还想指出,通过使用parseInt,您将start_time和end_time设置为整数。整数数据类型没有子字符串函数,这就是为什么会出现这些错误。请检查我的答案以了解分钟解决方案-我想我也有解决您错误的方法。更新请立即检查nowWorks,谢谢!如果您知道如何将此链接修改为包含会议记录,请让我知道此链接可能会有所帮助。请接受,因为上面的回答很好。提示NaN hours DifferenceId您是否记得将date_1和date_2更改为输入的ID?好的,但在JSFIDLE中,您仍然需要创建两个输入字段,否则没有输入数据可供处理,这将导致错误。给你:抱歉ralfe,我使用JSFIDLE只是为了向你展示JS代码,我在实际代码中测试了代码。你看过我在上一篇评论中提供的链接了吗?单击按钮并在javascript弹出窗口中查看答案。