2014-01-08 85 views
0

我試圖在窗體中添加一個字段,其中用戶可以使用timePicker爲換班選擇start_time和end_time,然後這將填充名爲total_hours的字段,其差異另外2個輸入字段。基於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; 
} 

我得到的控制檯錯誤:

Uncaught TypeError: Object NaN has no method 'substr'

Uncaught TypeError: Object 9 has no method 'substr' (var sub_start = start_time.substr(0,1);)

timePicker存儲時間hh:mm格式,所以我試圖刪除分鐘,現在結腸,試圖讓total_hours展示,然後再考慮如何處理會議紀要。

有關如何解決此問題的任何建議,以及可能如何處理會議紀要,將不勝感激。

http://jsfiddle.net/Bpw6Y/

+0

你能提供完整的jsfiddle例子嗎? – cubitouch

+1

start_time和end_time輸入包含不正確的數字 – cosset

+0

請看下面的答案哥們 – Shadow

回答

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"); 

希望有所幫助。

問候, 拉爾夫

+0

提供警示NaN小時差 –

+0

您是否記得將「date_1」和「date_2」更改爲輸入的ID號碼? – ralfe

+0

是的,我做了http:// jsfiddle。net/TGXg9/ –

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是一個String原型法和start_timeend_time是數字。您可能需要使用

var sub_start = (start_time+'').substr(0,1);

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> 
+0

給與警告NaN –

+0

更新請立即檢查 –

+0

現在就工作,謝謝!如果你知道如何修改這個分鐘,請讓我知道 –