我一直在尝试制作一个JavaScript程序,以确定给定的年份是否为year年。问题是提示不是。如果我删除if-else语句,那么它可以正常工作。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<button type="button" onClick="myfunc()"></button>
<script>
function myfunc() {
var a = prompt("Enter the year?");
if (a % 4 == 0) {
if (a % 100 == 0) {
if (a % 400 == 0) {
window.alert("it is a leap year");
}
else:
window.alert("it is not a leap year");
}
else:
window.alert("it is a leap year");
}
}
</script>
</body>
</html>
答案 0 :(得分:0)
如果您只需要合上适当的花括号,则说明您做得不好。 只需将脚本替换为此。您需要学习javascript,否则here
<script>
function leapYear(year)
{
return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}
function myfunc()
{
var a = prompt("Enter the year?");
if(leapYear(a))
{
alert("Its a leap year");
}
else{
alert("Not a leap year");
}
}
</script>
答案 1 :(得分:0)
您的主要问题是语法错误-如果您在浏览器开发人员工具控制台中查看,则应该看到错误消息
SyntaxError: expected expression, got ':'
那是firefox所说的,但其他浏览器可能会发出不同的消息,但该消息应指向出现问题的行
修正后的另一个问题是,您的代码将仅对4整年的任何年份发出警报-如果不能将其整整为4,则根本不会发生警报
整理代码,您会明白为什么
function myfunc() {
var a = prompt("Enter the year?");
if (a % 4 == 0) {
if (a % 100 == 0) {
if (a % 400 == 0) {
window.alert("it is a leap year");
} else {
window.alert("it is not a leap year");
}
} else {
window.alert("it is a leap year");
}
} // you would need an else here for a % 4 !== 0
}
因此,您的代码将最终结束
function myfunc() {
var a = prompt("Enter the year?");
if (a % 4 == 0) {
if (a % 100 == 0) {
if (a % 400 == 0) {
window.alert("it is a leap year");
} else {
window.alert("it is not a leap year");
}
} else {
window.alert("it is a leap year");
}
} else {
window.alert("it is a leap year");
}
}
一切都很好,但是您只有四个警报,而实际上您只需要两个
因此,根据输入的值是否为a年,创建另一个将为true或false的变量
function myfunc() {
var a = prompt("Enter the year?");
var isLeap = (a % 4 === 0) && ((a % 100 !== 0) || (a % 400 === 0));
if (isLeap) {
window.alert("it is a leap year");
} else {
window.alert("it is not a leap year");
}
}
答案 2 :(得分:0)