Редактировать: Я обновил код до нового. Все работает отлично, за исключением одной строки, которая вступает в этот месяц: if ((q < 1 || q> 28) & & (m == 2) & & (q% 4 === 0) & & (! (Q% 100)))Javascript не применяет условия?
Итак, я, наконец, получил свой калькулятор, чтобы начать работать, но он не соответствует моим условиям. Например, если я набираю 40-й сентябрь, это дает мне день. Очевидно, этого не должно быть. Любая идея, где я пошла не так?
Благодаря
`функция handleInput (форма) { попытка { вар форма = document.getElementById ("Timeform");
var strYears = form.years.value;
var strMonths = form.months.value;
var strDays = form.days.value;
var Y = parseInt(strYears);
var m = parseInt(strMonths);
var q = parseInt(strDays);
var h = "";
var output = "";
if (isNaN(Y))
throw ("Incorrect input. Years is not a number.");
if (Y < 0 || Y > 9999)
throw "Incorrect input. Years is out of expected range (0-9999).";
if (isNaN(m))
throw "Incorrect input. Months is not a number.";
if (m < 1 || m > 12)
throw "Incorrect input. Months is out of expected range (1-12).";
if (isNaN(q))
throw "Incorrect input. Days is not a number.";
if ((q < 1 || q > 31) && (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12))
throw "Incorrect input. Days is out of expected range (1-31).";
if ((q < 1 || q > 30) && (m == 4 || m == 6 || m == 9 || m == 11))
throw "Incorrect input. Days is out of expected range (1-30).";
if ((q < 1 || q > 28) && (m == 2) && (q % 4 === 0) && (!(q % 100)))
throw "Incorrect input. Days is out of expected range (1-28).";
if (m == 1 || m == 2) {
m = m + 12;
Y = Y - 1;
}
h = (q + Math.floor(13 * (m + 1)/5) + Y + Math.floor(Y/4)
- Math.floor(Y/100) + Math.floor(Y/400)) % 7;
{
if (h == 0)
h = "Saturday";
if (h == 1)
h = "Sunday";
if (h == 2)
h = "Monday";
if (h == 3)
h = "Tuesday";
if (h == 4)
h = "Wednesday";
if (h == 5)
h = "Thursday";
if (h == 6)
h = "Friday";
var output = h;
document.getElementById("output").innerHTML = output;
}
}
catch(error){
document.getElementById("output").innerHTML = "Error: " + error;
}
}`
почему назначая значение т, если выполнено условие (д < 1 && q > 31) && (т = 1 || 3 || 5) –
Вы используете '=' вместо '' == при сравнении месяца, так все, что вы делаете, присваивает значение 'm'. –
Этот код даже не действителен: Uncaught SyntaxError: Неожиданный токен) – Damien