我尝试在表单中添加字段,用户可以使用timePicker为shift选择start_time和end_time,然后填充名为total_hours的字段,其中包含2个其他字段输入字段。
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 = start_time.substr(0,1))
timePicker将时间存储为hh:mm
格式,所以我现在尝试删除分钟和冒号,以便在考虑如何处理分钟之前尝试显示total_hours。 / p>
有关如何修复此代码的任何建议,以及可能如何以该格式处理会议记录,将不胜感激。
答案 0 :(得分:0)
我建议您首先读取两个输入的值,然后将它们解析为Date对象,然后执行减法(我包括绝对函数以补偿切换值)。这是一个可能的解决方案:
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");
希望有所帮助。
此致 拉尔夫
答案 1 :(得分:0)
使用parseInt
,您可以将两个输入标记中的值转换为数字。
你正在获得
Uncaught TypeError: Object NaN has no method 'substr'
错误,因为parseInt
之后返回的值是NaN(非数字),这意味着来自#start_time
输入的值无效。
你正在获得
Uncaught TypeError: Object 9 has no method 'substr' (var sub_start = start_time.substr(0,1);)
错误,因为substr
是一个字符串原型方法,而start_time
和end_time
是数字。您可能想要使用
var sub_start = (start_time+'').substr(0,1);
代替。
答案 2 :(得分:0)
试试这个
<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>