2015-07-22 2 views
-1

У меня возникают некоторые проблемы с этой функцией jscript, возвращающей NaN. Я пробовал parseInt по inTime и outTime, но не работает для меня. Я надеялся получить какое-то руководство.вычислить разницу во времени с 24-часовым выбором ящиков

function diffHours (h1,m1,h2,m2,t) { 
    var inTime = ((h1 * 60) + m1); 
    var outTime =((h2 * 60)+ m2); 


    /* Converts total in minutes to "hh:mm" format */ 
    function toText (m) { 
     var minutes = m % 60; 
     var hours = Math.floor(m/60); 

     minutes = (minutes < 10 ? '0' : '') + minutes; 
     hours = (hours < 10 ? '0' : '') + hours; 

     return hours + ':' + minutes; 
    } 

    h1 = parseInt(inTime, 10); 
    h2 = parseInt(outTime, 10); 

    var diff = h2 - h1; 


    document.getElementById(t).value = toText(diff) 
} 

Я тогда 4 полей выбора в документе: час в минуту, в час, выход, минута, что выполнить эту функцию onChange и должен вывести его на вход только для чтения с разницей во времени. Edit: вот на вход

<cfset timeHour = ['','00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23']> 
<cfset timeMinute = ['','00','01','02','02','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59']> 

<td><cfselect name="sun_in_hh" id="sun_in_hh" onChange="diffHours('sun_in_hh','sun_in_mm','sun_out_hh','sun_out_mm','sun_total')"> 
      <cfloop array="#timeHour#" index="h"> 
       <option value="#h#">#h#</option> 
      </cfloop> 
     </cfselect> 
     <cfselect name="sun_in_mm" id="sun_in_mm"> 
      <cfloop array="#timeMinute#" index="m"> 
       <option value="#m#">#m</option>        
      </cfloop> 
     </cfselect></td> 
<td><cfselect name="sun_out_hh" id="sun_out_hh" onChange="diffHours('sun_in_hh','sun_in_mm','sun_out_hh','sun_out_mm','sun_total')"> 
      <cfloop array="#timeHour#" index="h"> 
       <option value="#h#">#h#</option> 
      </cfloop> 
     </cfselect> 
     <cfselect name="sun_out_mm" id="sun_out_mm"> 
      <cfloop array="#timeMinute#" index="m"> 
       <option value="#m#">#m#</option>         
      </cfloop> 
     </cfselect></td> 
<td><cfinput type="text" name="sun_total" id="sun_total" size=5></td> 
+0

Так что вы положить в ваша функция? Откуда берутся эти ценности? Хорошо работает для меня (http://jsfiddle.net/qow7jnx0/) – putvande

+0

см. Edit please – bWF800

+0

Похоже, вам нужно сначала получить значения. Вы отправляете только имена переменных, а не фактические значения. – putvande

ответ

0

Так, скорее всего, ваше дело, как вы сказали, что они приходят из полого выбора

diffHours("22","45","23","15") or 

diffHours("2j2","45","23","15") 

function diffHours (h1,m1,h2,m2,t) { 
 
    var inTime = ((h1 * 60) + m1*1); // convert the strings to number 
 
    var outTime =((h2 * 60)+ m2*1); // convert the strings to number 
 

 

 
    /* Converts total in minutes to "hh:mm" format */ 
 
    function toText (m) { 
 
     var minutes = m % 60; 
 
     var hours = Math.floor(m/60); 
 

 
     minutes = (minutes < 10 ? '0' : '') + minutes; 
 
     hours = (hours < 10 ? '0' : '') + hours; 
 

 
     return hours + ':' + minutes; 
 
    } 
 

 
    h1 = parseInt(inTime, 10); 
 
    h2 = parseInt(outTime, 10); 
 

 
    var diff = h2 - h1; 
 

 

 
    alert(toText(diff)) 
 
} 
 
diffHours(22,45,23,15) 
 
diffHours("22","45","23","15") 
 
diffHours("2j2","45","23","15")

+0

Я использую select boxes, см. Править, пожалуйста. Я все еще получаю NaN: NaN в своей суммарной коробке. Я тестировал каждый компонент моего jscript, и он работает, пока я не выполнил его на странице. – bWF800

Смежные вопросы