0

テキスト フィールドへのユーザー入力を 1900 年から 2012 年までの整数として受け入れる HTML ページを作成するにはどうすればよいですか。ユーザーが [表示] ボタンを押すと、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>

関数をボタンにバインドする方法は他にもあります。これは宿題の質問であり、ID に精通しているかどうかはわかりませんがdocument.getElementById、おそらくこの解決策で十分でしょう。

于 2012-09-11T07:11:52.470 に答える
0

楽しみのために、4 で割り切れる年をテストするだけのアプローチを次に示します。

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']; 
}

そして、これをページに配置する1つの方法(「ベストプラクティス」ではないという人もいるかもしれません)は次のとおりです。

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 に答える