我有一个训练单元的清单,每个单元都有训练所需的小时数。例如:
培训单元- 2.5小时
培训模块2-1.0小时
.
我把它们设置为jquery拖放,就像购物车一样,这样用户就可以抓取想要的模块,并将它们放到另一个容器中。
当一个项目被添加到容器中时,我需要计算出该模块将放在哪一天的培训。每天7.5小时。
我需要在投递容器中显示以下内容:
培训单元1-2.5小时-第1天
培训模块2-1.0小时-第1天
培训单元3-4.0小时-第1天
培训模块4-1.0小时-第2天
培训模块5-4.5小时-第2天
培训模块6-3.0小时-第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天工作,但之后的日子值不加起来。
这有什么更优雅的吗?我觉得我想得太多了。
发布于 2015-05-14 15:07:06
这里有一些取样方法:
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"/>
https://stackoverflow.com/questions/30240504
复制相似问题