2015-05-14 40 views
0

我的培訓模塊列表,每個擁有它需要培訓小時數的值。例如:計數小時的數字,新的一天設置每隔7.5小時

培訓模塊之一 - 2.5小時
培訓模塊二 - 1.0小時
....

我把它們設置爲一個jQuery拖放,幾乎就像購物車一樣,用戶可以抓取需要的模塊並將其放入另一個容器中。

當一個項目被添加到容器中,我需要找出什麼天訓練的該模塊將被放置在每一天是7.5小時。

什麼,我需要顯示在滴眼容器是這樣的:

培訓模塊之一 - 2.5小時 - 第1天
培訓模塊二 - 1.0小時 - 1日
培訓模塊三 - 4.0小時 - 第1天
培訓模塊四 - 1.0小時 - 第2天
培訓模塊五 - 4.5小時 - 第2天
培訓模塊六 - 4.8小時 - 3天
....

這是我已經試過:

var $dayFields = $('#sortable2 li').find('#day'); 
var $sumHrsFields = $('#sortable2 li').find('#sumHrs'); 

var hrsArray = $("#sortable2 li").find("#hrsSpan").map(function() { return $(this).text() }).get();    
//Add all the hrs together to get the total 
for (var i in hrsArray) { 
    total += hrsArray[i]; 
    if (total/7.5 <= 1) { 
     $($dayFields.get(i)).html('1'); 
     $($sumHrsFields.get(i)).html(total); 
    } 
    else if (total/7.5 > 1) { 
     dayText = total/7.5; 
     //if the dayText value ends up as a whole number, don't do anything. If it isn't, round down to whole number and add 1 
     if (dayText % 1 == 0) { 

     } 
     else { 
      dayText = dayText | 0; 
      dayText += 1; 
     } 
     $($dayFields.get(i)).html(dayText); 
     $($sumHrsFields.get(i)).html(total-(7.5)); 
    } 
} 

它適用於第2天或3天但是那天的價值不加起來。

是否有一個更優雅的appoach這樣做呢?我覺得我正在解決問題。

回答

1

這是某種採樣方法:

var hrsArray = [1.75, 1, 3.25, 2.5]; 
 
var total = 0; 
 
var hoursInDay = 7.5; 
 
for (var i in hrsArray) { 
 
    var moduleNo = parseInt(i) + 1; 
 
    total += hrsArray[i]; 
 
    var days = Math.floor(total/hoursInDay); 
 
    var dayText = days + 1; // need to add 1 for 1-day ahead 
 

 
    $('#display').append('Module ' + moduleNo + ': ' + hrsArray[i] + ' hours, Day ' + dayText); 
 
    $('#display').append('<br/>'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="display"/>

+0

現在檢查,TY –

+0

+1有幫助的,但每一天的最後添加的模塊似乎仍然是錯誤的?當我小時添加模塊是這樣的:** ** 1.75 ** ** 1,** 3.25 **,** 2.5 ** - 它們全部顯示一天'1' –

+0

更新日計算邏輯 – MaxZoom

相關問題