2016-11-10 40 views
0

這是我的代碼,用於輸入他們的生日來計算一個人的年齡。我無法讀取生日輸入並在getAge函數中使用。此外,我無法在第二個文本框中顯示年齡。我不確定如何糾正這些。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) 

是不一樣的

getAge() 

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

應該

var pieces = []; 
    pieces = birth.split('/'); 
0

你怎麼知道你的用戶是以你想要的格式輸入日期? 首先,您必須確保以輸入的格式輸入希望的格式,方法是在輸入的佔位符中給他們指示。我們假設他們以'YYYY-MM-DD'格式輸入輸入。這是使用時刻js的解決方案。 您的代碼存在的問題是您沒有獲得bDay字段的值。 得到這樣

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

斯普利特值現在

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是你需要的東西。只要你想使用它。

希望這會有所幫助。

P.S-如果您不知道,請務必查看js庫的時刻。

0

嘿在你的腳本

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

此塊的代碼分別爲生日是不確定的,並會導致錯誤在這條線上。

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

這就是爲什麼你的函數停止工作。

的第二個問題是我沒有看到你的函數,從出生元素獲得數據的任何代碼,來獲取值

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

希望幫助