如何创建一个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;
我不明白如何将此功能绑定到按钮?
答案 0 :(得分:1)
我假设您想要计算引入1582年Gregorian Calendar的闰年年份。在公历中,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>
还有其他方法可以将函数绑定到按钮。由于这是一个家庭作业问题,我不知道你是否熟悉id和document.getElementById
,这个解决方案可能已经足够了。
答案 1 :(得分:0)
只是为了好玩,这里的方法只是测试可以被四整除的年份:
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'];
}
以这种方式(有些人可能会说&#34;最佳做法&#34;)将它放在页面中:
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>