This page is supposed to calculate the time elapsed from the date entered by the user to the actual date. After the user enters the date, month and year and hits the Submit button, it SHOULD display the elapsed time. Also, it should convert day values in excess of 31 into months an months in excess of 12 into years. Somewhere, my logic is flawed. If I enter a month with a higher value than the present month, the script won't even fire. In some cases, I get negative values, even when the date is earlier than the present. I'm not sure what's causing the error, even after trying to debug through Firebug.
Here's what I have:
HTML Form
<form>
<fieldset>
<label for="Day">
Enter a day
</label>
<input type="number" id="Day">
<label for="Month">
Enter a month
</label>
<input type="number" id="Month">
<label for="Year">
Enter a year
</label>
<input type="number" id="Year">
</fieldset>
<fieldset>
<button type="button" id="button">Submit Date</button>
</fieldset>
<fieldset>
Time Elapsed Since Date Entered:
<p id="Result"></p>
</fieldset>
</form>
Javascript
<script>
function convertTime() {
var day = document.getElementById("Day").value;
var month = document.getElementById("Month").value;
var year = document.getElementById("Year").value;
var today = new Date();
var curDate = today.getDate();
var curMonth = today.getMonth() + 1;
var curYear = today.getFullYear();
var elapsedDay;
var elapsedMonth;
var elapsedYear;
//Unit conversion for excess values
if (day > 31) {
var d2mConvert = (day / 31);
var d2mRemain = (day % 31);
month + d2mConvert;
day + d2mRemain;
}
if (month > 12) {
var m2yConvert = (month / 12);
var m2yRemain = (month % 12);
year + m2yConvert;
month + m2yRemain;
}
//Calculating entered date to present day
elapsedYear = (curYear - year);
elapsedMonth = (curMonth - month);
elapsedDay = (curDate - day);
if (elapsedMonth <= -1) {
elapsedMonth = (elapsedMonth + 12);
ellapsedYear - 1;
}
if (elapsedDay <= -1) {
elapsedDay = (elapsedDay + 31);
elapsedMonth -1;
}
document.getElementById("Result").innerHTML = elapsedDay + " day(s), " + elapsedMonth + " month(s), and " + elapsedYear + " year(s).";
}
function createEventListener() {
var submitButton = document.getElementById("button");
if (submitButton.addEventListener) {
submitButton.addEventListener("click", convertTime, false);
} else if (submitButton.attachEvent) {
submitButton.attachEvent("onclick", convertTime);
}
}
if (window.addEventListener) {
window.addEventListener("load", createEventListener, false);
} else if (window.attachEvent) {
window.attachEvent("onload", createEventListener);
}
</script>
Any help would be appreciated.
Aucun commentaire:
Enregistrer un commentaire