2016-11-10 84 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; 

希望帮助

相关问题