我试图在javascript中制作一个简单的数学练习程序。在提示警报中给出不同的值,并将答案与用户输入进行比较。这是代码:
<html>
<head>
<title>Calculations</title>
<script language = "javascript">
generate();
function generate() {
{
var calc = Math.floor(math.random() * 3 + 1);
if (calc == 1){
calcSort == "+"
}else if(calc == 2){
calcSort == "*";
} else if (calc == 3){
calcSort == "/";
}
var num1 = Math.floor(Math.random() * 10 + 1);
var num2 = Math.floor(Math.random() * 10 + 1);
var answer;
if (calc == 1){
answer = num1 + num2;
} else if (calc == 2){
answer = num1 * num2;
} else if (calc == 3){
answer = num1 / num2;
}
var userAnswer = prompt("What is " + num1 + calcSort + num2 + "?");
if (userAnswer == answer){
alert("correct");
} else {
alert("fail");
}
}
</script>
</head>
</html>
提示没有出现,出了什么问题?
答案 0 :(得分:5)
在{
的函数声明开头有一个额外的generate()
,还没有定义math
,因为您需要使用Math
(区分大小写)使用实用程序功能。
答案 1 :(得分:1)
评论Alex W的答案移到了这里:
除了Alex W的答案之外,您正在尝试使用等于运算符(calcSort
)而不是赋值运算符(==
)来分配=
,并且您正在定义{全局范围内的{1}}(错误)。这是一个有效的jsFiddle:http://jsfiddle.net/695BK/1
另外,为了好玩,我想我会告诉你如何轻松地清理代码以使其更易于维护。将calcSort
与数字进行比较的多个代码块对我而言是代码气味。我将每个calc
结果的所有逻辑都隐藏在一个小帮助对象数组中。然后你可以从数组中随机选择一个操作。如果要添加其他操作,只需将项添加到calc
数组:
operations
以上是上述工作演示:http://jsfiddle.net/695BK/3/
答案 2 :(得分:0)
几个问题:
{
Math
而不是math
==
代替=
尝试将值分配给calcSort
这是一个有效的版本:http://jsfiddle.net/Tfb97/
请注意,您应该使用var
声明所有变量,或者它们是全局的 - 目前您不会声明calcSort
。
另请注意,如果您检查浏览器的JS控制台是否存在错误,则可以找到上面的前两个问题。缺少的{
会产生“意外的输入结束”错误,而第二个会产生“ReferenceError:math not defined”。 (==
与=
事实上并不是语法错误,因此不会在控制台中报告。)