Javascript 如何计算小时数总和

Javascript 如何计算小时数总和,javascript,jquery,Javascript,Jquery,你们能帮我算出十进制的小时数吗。我真的不知道该怎么问 7.6的总和应该是8小时,因为我的数据是0.1小时到0.5小时。你们能帮我求出总数而不求出从*.6到*.9的总和吗 function change() { var h1 = $('#hs1').val(); var h2 = $('#hs2').val(); var h3 = $('#hs3').val(); var h4 = $('#hs4').val(); var su

你们能帮我算出十进制的小时数吗。我真的不知道该怎么问

7.6的总和应该是8小时,因为我的数据是0.1小时到0.5小时。你们能帮我求出总数而不求出从*.6到*.9的总和吗

function change() {
       var h1 = $('#hs1').val();
       var h2 = $('#hs2').val();
       var h3 = $('#hs3').val();
       var h4 = $('#hs4').val();
       var sum = parseFloat(h1) + parseFloat(h2)  + parseFloat(h3) + parseFloat(h4);
       document.getElementById("the_sum").innerHTML = parseFloat(sum).toFixed(1);
    }
这是我在“更改”下拉列表中计算总和的代码

我想要小数点。但是我不希望它在0.5之前是0.6,因为我用十进制计算小时数$小时数=数组0.1,0.2,0.3,0.4,0.5,1,1.1,1.2,1.3,1.4,1.5,2,2.1,2.2,2.3,2.4,2.5,3,3.1,3.2,‌​3.3,3.4,3.5,4,4.1,4.2,4.3,4.4,4.5,5,5.1,5.2,5.3,5.4,5.5,6,6.1,6.2,6.3,6.4,6.5,7,7‌​.1,7.2,7.3,7.4,7.5,8;

例如,0.1+0.2+0.3=0.6,这是小时数。0.6应该是1小时。不是0.6。0.7应该是1.1小时。你们明白我的问题吗


我想得到0.1小时+0.2小时+0.3小时=1小时。不是0.6小时。帮帮我,伙计们,你想做的是以小时为单位将选定的时间显示为浮动

   document.getElementById("the_sum").innerHTML = Math.ceil(sum);
所以

您应该使用分钟作为选择框的值,并将总和除以60以获得浮点数:

HTML:


演示:

好的,对你来说,7.9是8小时30分钟。。。所以用这个

sum = sum.toString().split(".");
console.log(sum);
sum = parseFloat(sum[0]) + parseFloat( parseInt(sum[1])>6 ? 1+(parseInt(sum[1])-6)/10 : sum[1] );
然后你可以再次分开,分出几小时和几分钟


好的,这里是另一个尝试:

演示:

HTML:

JS:

$document.readyfunction{ $'select'。在'change'上,更新sum; }; 函数更新{ var小时=0, 总和=0; $“选择选项:已选择”。每个功能,选项{ sum+=parseInt$option.val; }; var小时=总和/60.0; $'sum'.textsum+'minutes='+hours+'hours'; } 选择 10分钟 20分钟 30分钟 40分钟 50分钟 1小时 选择 10分钟 20分钟 30分钟 40分钟 50分钟 1小时 选择 10分钟 20分钟 30分钟 40分钟 50分钟 1小时 选择 10分钟 20分钟 30分钟 40分钟 50分钟 1小时
森:嗨!到底是什么问题?我不明白你想要实现什么。为什么在这个问题上有PHP?看来你正试图完全在前端解决这个问题。你在你的h*变量中得到了什么样的值?您在求和计算中面临的问题是什么?我想在下拉框中获取值的和。每当用户单击下拉框时。它将检测其值并计算其总和。我已经完成了。但我的下拉框中的值是小时。例如,0.1小时代表10分钟。0.5小时等于50分钟。1小时等于60分钟。当用户选择第一个框0.1小时、第二个框0.2小时、第三个框0.3小时时,就会出现问题。总数为0.6小时。0.6小时应为1小时。如何计算该值,使我只能显示0.1-0.5然后1小时?只需写入fixed0;h*是我下拉框中的字符串值。有4个下拉框我的下拉框的值在数组中。所有4个下拉框都是这样的。$hour_arr=array0.1,0.2,0.3,0.4,0.5,1,1.1,1.2,1.3,1.4,1.5,2,2.1,2.2,2.3,2.4,2.5,3,3.1,3.2,‌​3.3,3.4,3.5,4,4.1,4.2,4.3,4.4,4.5,5,5.1,5.2,5.3,5.4,5.5,6,6.1,6.2,6.3,6.4,6.5,7,7‌​.1,7.2,7.3,7.4,7.5,8;
<select id="hs1" onchange="change()">
    <option value="0"></option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
</select>
<select id="hs2" onchange="change()">
    <option value="0"></option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
</select>
<select id="hs3" onchange="change()">
    <option value="0"></option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
</select>
<select id="hs4" onchange="change()">
    <option value="0"></option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
</select>

<div id="the_sum"></div>
$('#hs1, #hs2, #hs3, #hs4').change(function() {
    var h1 = $('#hs1').val();
    var h2 = $('#hs2').val();
    var h3 = $('#hs3').val();
    var h4 = $('#hs4').val();
    var sum = parseFloat(h1) + parseFloat(h2)  + parseFloat(h3) + parseFloat(h4);
    $("#the_sum").html(parseFloat(sum / 60).toFixed(1));
});
sum = sum.toString().split(".");
console.log(sum);
sum = parseFloat(sum[0]) + parseFloat( parseInt(sum[1])>6 ? 1+(parseInt(sum[1])-6)/10 : sum[1] );
<select id="hs1">
</select>
<select id="hs2">
</select>
<select id="hs3">
</select>
<select id="hs4">
</select>

<div id="the_sum"></div>
//This is just to populate the select boxes with values from 0 to 8
var arrData = new Array();
for(i=0;i<=8;i+=0.1) {
 arrData.push(i.toFixed(1));   
}
$('#hs1, #hs2, #hs3, #hs4').each(function() {
    for(i=0;i<arrData.length;i++) {
      $(this).append('<option value="' + arrData[i] + '">' + arrData[i] + '</option>');   
    }
});

$('#hs1, #hs2, #hs3, #hs4').change(function() {
    var h1 = $('#hs1').val();
    var h2 = $('#hs2').val();
    var h3 = $('#hs3').val();
    var h4 = $('#hs4').val();

    //Calculate the sum
    var sum = parseFloat(h1) + parseFloat(h2)  + parseFloat(h3) + parseFloat(h4);
    sum = parseFloat(sum).toFixed(1);
    var parts = sum.split('.');

    parts[1] = parseFloat(parts[1]);
    parts[0] = parseFloat(parts[0]);
    if(parts[1] >= 6) {
     parts[1] -= 6;
     parts[0] += 1;
    }
    $("#the_sum").html(parts.join('.'));
});