简而言之,我有一个页面,我可以设置客户如何付款给我。
http://i.imgur.com/N6IuX2Y.png
我可以选择他们可以分多少次分期付款,以及他们是否每月或每两个月(每两个月)付款。
我现在拥有它,所以这几个月变化很好,但是每个月的变化频率被证明很难。
显然,1月应该总是在当前年份增加+1 ...但是使用双月选项意味着1月可能无法检测到,所以我将不得不使用2月......这很好,除非我开始12月的法案给我带来了很多麻烦。
2014年12月启动账单时,2月份将是2015年,但4月份将回到2014年。我无法解决这一问题。
这里我有一个小提琴: 的 http://jsfiddle.net/scott88/amd9fcjf/
var schedule = [];
function test() {
billingDate = document.getElementById("billingDate").value;
startMonth = parseFloat(billingDate.split("-")[1]);
startYear = parseFloat(billingDate.split("-")[0]);
frequency = document.getElementById("frequency").value;
instalments = document.getElementById("instalments").value;
months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];
for (var i = 0; i < instalments; i++) {
if (frequency === "monthly") {
mm = months[parseFloat((i + startMonth - 1) % 12)];
// If the month is ever January, increase the year by 1
if (mm === months[0] && startMonth != 1) // if the first month isn't January
{
yyyy = startYear + 1;
} else {
yyyy = startYear;
}
schedule.push(mm + "-" + yyyy);
} else {
// frequency === "bimonthly"
mm = months[parseFloat(((i * 2) + startMonth - 1) % 12)];
if ((mm === months[0] && startMonth != 1) || (mm === months[1] && startMonth != 2)) {
yyyy = startYear + 1;
console.log("Start Month ! January/February, year + 1");
} else {
yyyy = startYear;
}
schedule.push(mm + "-" + yyyy);
}
}
console.log(schedule);
document.getElementById("depositDates").innerHTML = schedule;
}
编辑:
我清理了一下,我决定(现在)使用++ var方法,并且限制自己提供太多的分期付款(几乎隐藏了选择bi时年份不会改变的事实 - 月和startMonth是Jan / Feb)。因此,如果这个月是2月,我只能提供6期,不算太糟。
var schedule = [];
function paySchedule() {
total = document.getElementById("total").value;
billingDate = document.getElementById("billingDate").value;
startMonth = parseFloat(billingDate.split("-")[1]);
startYear = parseFloat(billingDate.split("-")[0]);
frequency = document.getElementById("frequency").value;
instalments = document.getElementById("instalments").value;
months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];
payments = (total / instalments).toFixed(2);
yyyy = startYear;
for (var i = 0; i < instalments; i++) {
if (frequency === "monthly") {
mm = months[parseFloat((i + startMonth - 1) % 12)];
// get months by number
monthNum = months.indexOf(mm);
// check if month is January
if (monthNum === 0) {
console.log("Jan detected, year + 1");
// add another year
yyyy = startYear + 1;
}
schedule.push(payments + "-" + mm + "-" + yyyy);
} else // important, make sure the user can only input a maximum of 6 instalments
{
// frequency === "bimonthly"
mm = months[parseFloat(((i * 2) + startMonth - 1) % 12)];
// get months by number
monthNum = months.indexOf(mm);
// check if month is January or February
if ((monthNum === 0 || monthNum === 1) && startMonth != 1 && startMonth != 2) {
// add another year
yyyy = ++startYear;
}
schedule.push(payments + "-" + mm + "-" + yyyy);
}
}
console.log(schedule);
document.getElementById("depositDates").value = schedule;
}
答案 0 :(得分:0)
问题在于,您只更改了更改月份的年份值,而不是更改所有月份。
您可以通过替换两行来解决问题
yyyy = startYear + 1;
与
yyyy = ++startYear;
,但这只是一个肮脏的修复,并掩盖了正在发生的事情。您可以先将计划的起始月份和年份添加到计划中,然后递减installments
,然后在1月份(或2月份的双月刊)时随时增加yyyy
,摆脱{完全{1}}和startMonth
。