简单的JS与定义功能

时间:2012-11-26 10:07:53

标签: javascript function arguments semantics

我正在使用网站提示创建一个简单的问题,但我遇到了问题。

我收到了这个脚本的两个错误,首先是“问题未定义”,

其次“缺失”在参数列表“我第一次提示任何想法之后?

<script>
var a = Math.floor((Math.random()*10)+1);
var b = Math.floor((Math.random()*10)+1);
var c = Math.floor((Math.random()*10)+1);

var wrong = 0;

function question()
{   
    for(x=1; x>10; x++)
    {
        prompt("Does" b"+"c " = ");
        if(prompt.input == b + c)
        {
            question();
        }else{
            wrong++;
        }

        if(x==10)
        {
            alert("well you were wrong " + wrong" times");
        }
    }
}
</script>

5 个答案:

答案 0 :(得分:2)

您缺少

参数中的所有+
prompt("Does" b"+"c " = ");

您必须使用+来连接字符串:

prompt("Does " + b + "+" + c + " = ");

:{/ p>中缺少相同的+

alert("well you were wrong " + wrong" times");

使用:

alert("well you were wrong " + wrong + " times");

此外,您正在从内部调用question。这不会导致语法错误,但在您的情况下几乎不需要。


此外,prompt.input不起作用。它总是未定义的。使用提示调用的返回值:

var response = prompt( ... );
if(response == b+c){
  ...

此外,您只是初始化一次随机变量。也许你想在每个循环中有一个新的对(除非递归是为了那个)。感谢@Asad注意到。

答案 1 :(得分:1)

您似乎在几个地方跳过连接运算符。正确的版本看起来像这样:

prompt("Does " + b + "+" + c + " = ");

再次,在这里:

alert("well you were wrong " + wrong + " times");

此外:

  1. 您的随机数需要在开始时再次随机化 循环
  2. question不需要递归(您已经在使用循环)
  3. 警告用户错误的次数需要在循环外发生
  4. 以下是更正后的版本:

    var a = Math.floor((Math.random()*10)+1);
    var b = Math.floor((Math.random()*10)+1);
    var c = Math.floor((Math.random()*10)+1);
    
    var wrong = 0;
    
    function question()
    {   
        for(x=1; x>10; x++)
        {
            b = Math.floor((Math.random()*10)+1);
            c = Math.floor((Math.random()*10)+1);
            prompt("Does " + b + "+" + c + " = ");
            if(prompt.input != b + c)
                wrong++;        
        }
    
        alert("well you were wrong " + wrong + " times");
    }
    

答案 2 :(得分:0)

var f1 = alert("well you were wrong " + wrong + " times");

alert没有'返回一个值。

缺少字符串连接:

"Does" b"+"c " = "
"Does"+ b + "+" + c + " = "

(我建议检查所有字符串)

此外,随着你的循环中的循环,你正在生成一个无限循环: (稍微简化)

function question(){

    for(x=1; x>10; x++){
        question();
    }
}

每次拨打question();时,您都会拨打question(); 10次。

答案 3 :(得分:0)

question is not defined表示您的函数question在被浏览器实际读取之前被调用。

确保仅在触发window.ready事件后才执行主JS代码。

window.onready = function(){
    //Here your starting code goes
}

答案 4 :(得分:0)

首先,字符串的连接存在错误。应该像

prompt("Does" +b+c+" = ");
alert("well you were wrong " + wrong+" times");

其次,你经常使用函数question();而没有升值,这会创建一个循环