0

如何创建一个 HTML 页面,该页面接受用户在文本字段中输入的 1900 年到 2012 年之间的整数。当用户按下“显示”按钮时,在 JavaScript 中创建的函数应该能够显示输入整数和之间的所有闰年2012 年。

例子:

当用户在文本字段中输入“1970”时,结果为:

1972年
1976年
1980
1984年
1988年
1992
1996
2000
2004年
2008年

我有这样的代码

var str = '';
var i;

for ( i = 1970; i < 2012; i += 1 ) {    
    if ( new Date( i, 1, 29 ).getMonth() === 1 ) {
        str += '<p>' + i + '</p>';
    }
}

document.body.innerHTML = str;

我不明白如何将此功能绑定到按钮?​</p>

4

2 回答 2

1

我假设您要计算1582 年引入的公历中闰年的年份。在公历中,400 年中有 97 个闰年。

可以被 4 整除的每一年,但不是 100,但 400 是闰年。1600 和 2000 是,但不是 1700、1800、1900。

这是一个考虑到公历闰年所有规则的解决方案:

for (var i=1890; i < 2010; ++i) {
  if (!(i%4)&&(i%100)||!(i%400) ) console.log(i);
}

规则也可以写成

( ( (year % 4) == 0) && ( (year % 100) !== 0)) || ( (year % 400) ==0)

为了能够将此绑定到按钮,您必须将其放在函数中:

function printLeapYears() {
   //Do your thing here
}

然后你必须将它绑定到你的按钮。例如

<button type="button" onclick="printLeapYears()">print leap years</button>

还有其他方法可以将功能绑定到按钮。由于这是一个家庭作业问题,我不知道您是否熟悉 ids,document.getElementById但这个解决方案可能就足够了。

于 2012-09-11T07:11:52.470 回答
0

Just for fun, here's an approach that just tests years divisible by four:

function getLeapYears(start, end) {
    var startYear = Math.ceil(start / 4) * 4;
    var endYear = Math.floor(end / 4) * 4;
    var leapYears = [];

    if (isNaN(startYear) || isNaN(endYear)) return ['Invalid input'];

    while (startYear <= endYear) {
      if ( startYear % 100 || !(startYear % 400)) {
        leapYears.push(startYear);
      }
      startYear += 4;
    }
    return leapYears.length? leapYears : ['None']; 
}

And here's one way (some might say not "best practice") to put it in a page:

Start year: <input id="i0"><br>
End year: <input id="i1"><br>
<button onclick="
  var start = document.getElementById('i0');
  var end = document.getElementById('i1');
  var el =  document.getElementById('s0');
  if (start && end && el) {
    el.innerHTML = getLeapYears(start.value, end.value).join('<br>');
  }
">List leapyears</button><br>

<span id="s0"></span>
于 2012-09-11T12:13:43.550 回答