JavaScript提示不会出现

时间:2013-11-19 21:21:09

标签: javascript html

我试图在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>

提示没有出现,出了什么问题?

3 个答案:

答案 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)

几个问题:

  • 您在函数开头有一个额外的{
  • JS区分大小写,因此请使用Math而不是math
  • 您使用==代替=尝试将值分配给calcSort

这是一个有效的版本:http://jsfiddle.net/Tfb97/

请注意,您应该使用var声明所有变量,或者它们是全局的 - 目前您不会声明calcSort

另请注意,如果您检查浏览器的JS控制台是否存在错误,则可以找到上面的前两个问题。缺少的{会产生“意外的输入结束”错误,而第二个会产生“ReferenceError:math not defined”。 (===事实上并不是语法错误,因此不会在控制台中报告。)