2016-12-21 4 views
-2

私はtextboxでbirthyearを取得し、alertに年齢を表示しますが、それはNaNを示しています。JavaScriptでのNaN

function getAge(birth){ 
 
    //get current date 
 
    var now = new Date(); 
 
    var currentYear = now.getFullYear(); 
 
    //get bithday 
 
    var birthYear = birth; 
 
    //calc 
 
    var age = currentYear - birthYear; 
 
    // var age_month = currentMonth - birthmonth; 
 
    return age; 
 
} 
 

 
function getIn(){ 
 
    var getTextBox = document.getElementById("txtInput"); 
 
    var getVal = getTextBox.value; 
 
    var birth = new Number(getVal); 
 
    alert (getAge()); 
 
}
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title>TODO supply a title</title> 
 
     <meta charset="UTF-8"> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
     <script src="javascript.js"></script> 
 
    </head> 
 
    <body> 
 
     <form> 
 
      <input type="text" id="txtInput"/> 
 
      <input type="button" value="Calc" onclick="getIn()"/> 
 
     </form> 
 
    </body> 
 
</html>

+3

NaNは数字ではありません。あなたは 'alert(getAge());'呼び出し時に年齢を追加するべきですか? 'alert(getAge(birth));'? – Stu

+0

質問にかかわらず、 'getAge'関数に' birthYear'変数を作成する必要はありません。関数呼び出しから渡されたものだけを使うことができます。 – username

答えて

3

alert (getAge(birth));それを修正するようですか? getAgeは、birthの値が渡されることを期待しています。 NaNになります

function getAge(birth){ 
 
    //get current date 
 
    var now = new Date(); 
 
    var currentYear = now.getFullYear(); 
 
    //get bithday 
 
    var birthYear = birth; 
 
    //calc 
 
    var age = currentYear - birthYear; 
 
    // var age_month = currentMonth - birthmonth; 
 
    return age; 
 
} 
 

 
function getIn(){ 
 
    var getTextBox = document.getElementById("txtInput"); 
 
    var getVal = getTextBox.value; 
 
    var birth = new Number(getVal);//tabdil b addad 
 
    alert (getAge(birth)); 
 
}
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title>TODO supply a title</title> 
 
     <meta charset="UTF-8"> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
     <script src="javascript.js"></script> 
 
    </head> 
 
    <body> 
 
     <form> 
 
      <input type="text" id="txtInput"/> 
 
      <input type="button" value="Calc" onclick="getIn()"/> 
 
     </form> 
 
    </body> 
 
</html>
あなたはgetAgeには何も渡していない

1

()関数。

0

新しい番号の必要はありません。番号()のみを使用してください。また、関数にパラメータを渡すことができませんでした。

訂正されたコードを添付しました。

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>TODO supply a title</title> 
 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
    <script> 
 
     function getAge(birth) { 
 
      //get current date 
 
      var now = new Date(); 
 
      var currentYear = now.getFullYear(); 
 
      //get bithday 
 
      var birthYear = birth; 
 
      //calc 
 
      var age = currentYear - birthYear; 
 
      // var age_month = currentMonth - birthmonth; 
 
      return age; 
 
     } 
 

 
     function getIn() { 
 
      var getTextBox = document.getElementById("txtInput"); 
 
      var getVal = getTextBox.value; 
 
      var birth = Number(getVal); //tabdil b addad 
 
      alert(getAge(birth)); 
 
     } 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <form> 
 
     <input type="text" id="txtInput" /> 
 
     <input type="button" value="Calc" onclick="getIn()" /> 
 
    </form> 
 
</body> 
 

 
</html>

+0

NaNを取得する。あなたはその問題を知っていますか? –

+0

私はコードを訂正しました。これをチェックしてください。 – Nitheesh

+0

あなたは静かに/ **コピー**他の回答からコードを変更しましたが、理由を更新していませんでしたか? –

0

function getAge(birth) { 
 
    //get current date 
 
    var now = new Date(); 
 
    var currentYear = now.getFullYear(); 
 
    //get bithday 
 
    var birthYear = birth; 
 
    //calc 
 
    var age = currentYear - birthYear; 
 
    // var age_month = currentMonth - birthmonth; 
 
    return age; 
 
} 
 

 
function getIn() { 
 
    var getTextBox = document.getElementById("txtInput"); 
 
    var getVal = getTextBox.value; 
 
    var birth = new Number(getVal); //tabdil b addad 
 
    alert(getAge(birth)); 
 
}
<form> 
 
    <input type="text" id="txtInput" /> 
 
    <input type="button" value="Calc" onclick="getIn()" /> 
 
</form>

これを試してみてください。 getAge(birth)機能 へ

パス引数あなたは問題が変数のスコープで最終値

`var birthYear = birth; 
     //calc 
     var age = currentYear - birthYear;` 
0

を計算するPARAMTERを必要として。 birthgetInに宣言してから、getAgeでそれを読み取ろうとしていますが、間に変数を渡していません。

function getAge(birth) { 
    //get current date 
    var now = new Date(); 
    var currentYear = now.getFullYear(); 
    //get bithday 
    var birthYear = birth; 
    //calc 
    var age = currentYear - birthYear; 
    // var age_month = currentMonth - birthmonth; 
    return age; 
} 

function getIn() { 
    var getTextBox = document.getElementById("txtInput"); 
    var getVal = getTextBox.value; 
    var birth = new Number(getVal); //tabdil b addad 
    alert(getAge(birth)); 
} 

キーが最終行です。私は出生のコピーをgetAgeの機能に渡します。

関連する問題