【发布时间】:2016-06-02 19:04:36
【问题描述】:
我有两个表单字段,它们存储来自先前脚本的日期输出,每个输入 yearstart 和 yearend 都填充了格式为 YYYY-MM-DD 的日期。该脚本由嵌套的 onchange 函数触发,通过从另一个下拉列表中选择年份来填充两个框,然后触发嵌套函数以填充第二个下拉选择项。
<input type="text" name="yearstart" id="yearstart" value="" readonly/>
<input type="text" name="yearend" id="yearend" value="" readonly/>
<select id="weekselect"></select>
<script>
function getWeeks() {
document.getElementById("weekselect").innerHTML = "";
var yearstart = new Date(document.getElementById('yearstart').value);
var yearend = new Date(document.getElementById('yearend').value);
var iDate = new Date(yearstart);
while (iDate < yearend) {
var newele = document.createElement('option');
newele.text = toJSONLocal(iDate);
document.getElementById('weekselect').appendChild(newele);
iDate.setDate(iDate.getDate() + 7)
}
}
</script>
它有效,但遗憾的是,只有当我选择的年份值大于已选择的年份时,它才有效,所以 2015 年、2016 年有效,但我也得到了两年的日期而不是一个,所以我不知道我错过了什么。我只能推测脚本在值更新之前触发了,但是嵌套脚本的执行顺序应该可以防止这种情况发生。
各位有什么想法吗?
【问题讨论】:
-
一条评论,我认为
new Date(...)不会正确解析YYYY-MM-DD。 -
我认为您需要向我们展示更多代码,以了解它为何过早触发......,
-
它似乎确实有效,但是通过删除它,填充下拉列表的结果没有改变:(
-
我不明白/不明白这意味着什么。
-
我把整个序列放入小提琴jsfiddle.net/hevp9oL7
标签: javascript jquery date