2

所以,基本上我正在构建一个租赁表格,其中您有三个基本的月、日、年下拉菜单,分别是“租金来自”,然后是另外三个“租金截止”。

这很容易,我什至得到了不错的闰年支持等。问题在于根据“租金来源”生成“租金”。我希望“租到”在后记下拉列表中仅显示接下来的五天,但我很难制定出有效执行此操作的逻辑。

此外,范围是可变的,因此我正在尝试使用一个函数,该函数采用“租赁长度”参数来影响更改。该代码还使用参考点。因此,选择下拉菜单是“pick_up_day”、“pick_up_month”等。这是为了尝试使代码可移植到具有一致 ID 的 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 对象转换为三个下拉列表的好方法是什么?有没有比我现在更好的方法来处理这个问题?

4

1 回答 1

2

在逻辑方面,您需要将日期设置为开始日期和租赁时间的总和,采用 DATE 格式。

于 2012-08-01T15:57:21.127 回答