Javascript 基于2个输入的计算
我试图在表单中添加一个字段,用户可以使用timePicker选择班次的开始时间和结束时间,然后用其他两个输入字段之间的差异填充名为total_hours的字段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
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弹出窗口中查看答案。