所以,基本上我正在建立一个租赁表格,你有三个基本的下拉列表,分别是月,日,年,“租金来自”,然后是另外三个“租金直到”。
这很容易,我甚至得到了不错的闰年支持等等。问题在于根据“租金来源”产生“租金直至”。我希望“租到”只能在接下来的五个单词中显示下拉后的字样,并且我在制定逻辑时遇到了严重困难。
此外,范围是可变的,所以我正在尝试使用“租借长度”参数来实现更改。该代码还使用参考点。因此,拾取下拉列表是“pick_up_day”,“pick_up_month”等。这是为了尝试使代码可移植到具有一致ID'd HTML元素的多个项目。
这是我的基本逻辑以及到目前为止我所得到的:
这是设置起源日期等的代码。
function populate_dates(identifier) {
"use strict";
var i, currentday, node, textbox, maxdays;
while (document.getElementById(identifier + "days").hasChildNodes()) {
document.getElementById(identifier + "days").removeChild(document.getElementById(identifier + "days").firstChild);
}
currentday = new Date();
switch (parseInt(document.getElementById(identifier + "month").value, 10)) {
case 2:
if (new Date(currentday.getFullYear(), 1, 29).getDate() === 29) {
maxdays = 29;
} else {
maxdays = 28;
}
break;
case 9:
case 4:
case 6:
case 11:
maxdays = 30;
break;
default:
maxdays = 31;
break;
}
for (i = 1; i <= maxdays; i = i + 1) {
node = document.createElement("option");
textbox = document.createTextNode(i);
node.value = i;
node.appendChild(textbox);
document.getElementById(identifier + "days").appendChild(node);
}
}
window.onload = function() {
"use strict";
var currentday, i, node, textbox;
currentday = new Date();
for (i = 0; i <= 1; i = i + 1) {
node = document.createElement("option");
textbox = document.createTextNode(currentday.getFullYear() + i);
node.value = currentday.getFullYear() + i;
node.appendChild(textbox);
document.getElementById("pick_up_year").appendChild(node);
}
document.getElementById("pick_up_month").onchange = function () {
populate_dates("pick_up_");
};
populate_dates("pick_up_");
};
现在关于“直到”日期的逻辑,我已经制定了这样的伪代码,但对于这么简单的任务来说似乎过于复杂:
function a(referencer, ref1, ref2, rentlength) {
//Make datetime object out of ref1's current date;
datetime.setDays(datetime.getDate() + rentlength)
for (i = 0; i <= rentlength; i = i + 1) {
datetime.setDays(datetime.getDate() + i);
outmatrix[outmatrix.length] = [getDates, getMonth, getYear];
}
outmatrix.removeduplicates;
date_generator(ref2, outmatrix)
}
function date_generator(referencer, inputmatrix) {
Clean up referencer
Loop through, create nodes based on array[y+1][x];
}
有没有更好的方法来做到这一点,我只是没有看到?在删除重复项时,将Datetime对象转换为三个下拉列表的好方法是什么?有没有比我目前的方式更好的方法来处理这个问题?
答案 0 :(得分:2)
就逻辑而言,您需要以DATE格式将日期设置为开始日期和租借时间的总和。