gpt4 book ai didi

javascript - 使用日期

转载 作者:行者123 更新时间:2023-12-03 11:06:59 25 4
gpt4 key购买 nike

我编写了函数来显示注册表的年份范围。它可以正常工作,但我有几个问题。好吗?我应该多做一些事情还是纠正一些事情?因为我没有面向对象js的经验,我应该如何在oop中执行这个功能?函数在 body onload 时调用。这是代码:

function iYears() {
var years = document.getElementById('sYears');
var sDate = new Date();
var cYear = sDate.getFullYear();
var startYearsFrom = 1900;
var countYrs = [];
for (y = startYearsFrom; y <= cYear; y++) {
countYears.push(y);
}
countYrs.sort(function (a, b) {
return b - a
});
for (var opt in countYrs) {
var options = countYrs[opt].toString().split();
var selOption = document.createElement('option');
years.options.add(selOption);
selOption.value = options[0];
selOption.innerHTML = options[0];
}
}

最佳答案

我重构了一些你的代码:

function iYears(target, startYearsFrom) {
var cYear = (new Date()).getFullYear();
for (var y = cYear; y >= startYearsFrom; y--) {
var selOption = document.createElement('option');
selOption.value = y;
selOption.innerHTML = y;
target.options.add(selOption);
}
}

// invoke the function on a given target object
iYears(document.getElementById('sYears'), 1900);
  1. 使其可重复使用:
    将目标 HTML 节点和开始年份移至 iYears 函数的参数,这样您就可以通过不同的 HTML 元素和不同的日期限制重用此函数。

  2. 一个for循环:
    尽可能避免使用许多 for 循环和 sort()。在这里,您可以使用for循环来解决您的问题。

  3. 更喜欢离线 DOM 操作:
    当您创建新的选项元素,然后在将其附加到 DOM 之前设置其所有属性时,效率更高。

这里有上面代码的 fiddle :
http://jsfiddle.net/marcopeg/ta2vLxpm/

祝您的应用好运!

关于javascript - 使用日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27805603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com