2016-11-10 23 views
0

誕生日の入力から人の年齢を計算するコードは次のとおりです。私は誕生日入力を読み、getAge関数で使用するのに問題があります。また、私は2番目のテキストフィールドに年齢を表示することはできません。私はこれらを修正する方法がわかりません。HTMLボタンが実行されていませんJavaScript関数と関数出力が表示されません

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Age Calculator</title> 
    <script> 
    var birthday; 

    function getAge(birth) { 
     var bday = document.getElementById("bday"); 
     var ageDisplay = document.getElementById("ageDisplay"); 
     var today = new Date(); 
     var curr_date = today.getDate(); 
     var curr_month = today.getMonth() + 1; 
     var curr_year = today.getFullYear(); 
     var pieces = birth.split('/'); 
     var birth_date = pieces[0]; 
     var birth_month = pieces[1]; 
     var birth_year = pieces[2]; 
     if (curr_month == birth_month && curr_date >= birth_date) return parseInt(curr_year - birth_year); 
     if (curr_month == birth_month && curr_date < birth_date) return parseInt(curr_year - birth_year - 1); 
     if (curr_month > birth_month) return parseInt(curr_year - birth_year); 
     if (curr_month < birth_month) return parseInt(curr_year - birth_year - 1); 
    } 
    var age = getAge(birthday); 
    ageDisplay.value = age 
    </script> 
</head> 

<body style="background-color:red"> 
    <form> 
     <fieldset> 
      <label>Type your Date of Birth: </label> 
      <input type="text" id="bday" /> 
      <input type="button" value="click me" onclick="getAge()" /> 
      <br/> 
      <br/> 
      <label>Your Age is: </label> 
      <input type="text" id="ageDisplay" /> 
     </fieldset> 
    </form> 
    <body> 
</html> 

答えて

0

まず

function getAge(birth) 

なければならない第

var pieces = birth.split('/'); 

getAge() 

と同じではありません

0

ユーザーが希望の形式で日付を入力していることをどのように知っていますか? まず、入力のプレースホルダに指示を与えて、必要な形式で入力していることを確認する必要があります。 入力が「YYYY-MM-DD」形式で入力されているとします。ここで、モーメントjsを使用する解法があります。 コードの問題は、bDayフィールドの値が得られていないことです。 それは今

var bDaySplit = bDay.split('/'); 
    var birthYear = bDaySplit[0], month = bDaySplit[1], day = bDaySplit[2]; 
    var currDate = moment(), // get the current date using monment js 
     birthday = moment(birthYear + '/' + month + '/' + day); // 
    var age = currDate.diff(birthday, 'years'); 

ageはあなたが必要なものである。この

var bday = document.getElementById("bday").value; 

スプリットのような値を取得します。必要に応じて使用してください。

これが役に立ちます。

P.S-あなたがそれを知らない場合のために、瞬間jsライブラリを見てください。

0

はちょっと

var age = getAge(birthday); 
ageDisplay.value = age 

スクリプト内のコードのこの塊は誕生日が定義されていないと、この行でエラーが発生しました。

var pieces = birth.split('/'); 

あなたの機能が機能しなくなっている理由です。

第二の問題は、私は、誕生要素からデータを取得し、あなたの関数で任意のコードが表示されない

を助け値

var bday = document.getElementById("bday").value; 

希望に取得することです

関連する問題