如何在javascript中显示两年之间的所有闰年

如何在javascript中显示两年之间的所有闰年,javascript,leap-year,Javascript,Leap Year,如何创建一个HTML页面,将用户输入的文本字段作为1900到2012之间的整数接受。当用户按下“显示”按钮时,JavaScript中创建的函数应该能够显示输入的整数和2012之间的所有闰年 示例: 当用户在文本字段中输入“1970”时,结果为: 1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 我有这样的代码 var str = ''; var i

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

示例:

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

1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 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;
var-str='';
var i;
对于(i=1970;i<2012;i+=1){
if(新日期(i,1,29).getMonth()==1){
str+=''+i+'

'; } } document.body.innerHTML=str;
我不明白如何将此功能绑定到按钮上?

我假设您想计算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);
}
要将其绑定到按钮,必须将其放入函数中:

function printLeapYears() {
   //Do your thing here
}
然后你必须把它绑在你的钮扣上。比如说

<button type="button" onclick="printLeapYears()">print leap years</button>
打印闰年

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

为了好玩,这里有一种方法可以测试可被四整除的年份:

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']; 
}
函数getLeapYears(开始、结束){ var startYear=Math.ceil(start/4)*4; var endYear=数学层(结束/4)*4; var年数=[]; if(isNaN(startYear)| isNaN(endYear))返回['Invalid input'];
while(startYear)问题是什么?发布的代码似乎可以完成这项工作,但为什么不从可被4整除的最近年份开始,每四年进行一次测试?@RobG用户希望在单击按钮时执行此操作,但不知道如何执行。因此我猜问题类似于:“当我点击一个按钮时,如何运行此代码?”先生,但很抱歉,如果我只需要一个文本框,另一个文本框的最后范围是2012:)我希望年底未输入,但有一个有效的数字是2012
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']; 
}
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>