Javascript 具有定义函数的简单JS
我正在创建一个简单的问题,并使用网站提示,但我遇到了一些问题 我在这个脚本中遇到了两个错误,第一个错误是“问题未定义” 第二个“失踪)后的论点清单”上的行与我的第一次提示有什么想法Javascript 具有定义函数的简单JS,javascript,function,arguments,semantics,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; f
<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>
var a=数学地板((数学随机()*10)+1);
var b=数学地板((数学随机()*10)+1);
var c=数学地板((数学随机()*10)+1);
var=0;
函数问题()
{
对于(x=1;x>10;x++)
{
提示(“做“b”+“c”=”);
如果(prompt.input==b+c)
{
问题();
}否则{
错误++;
}
如果(x==10)
{
警惕(“嗯,你错了”+错了次数”);
}
}
}
警报
不返回值
缺少字符串连接:
"Does" b"+"c " = "
"Does"+ b + "+" + c + " = "
(我建议检查所有字符串)
此外,使用包含循环的递归,您将生成一个无限循环:
(略为简化)
您正在调用
question()代码>10次,每次调用问题()代码>问题未定义
表示您的函数问题
在浏览器实际读取之前被调用
确保仅在触发window.ready事件后才执行主JS代码
window.onready = function(){
//Here your starting code goes
}
您缺少到的参数中的所有+
prompt("Does" b"+"c " = ");
必须使用+
连接字符串:
prompt("Does " + b + "+" + c + " = ");
以下文件中缺少相同的+
:
alert("well you were wrong " + wrong" times");
使用:
此外,您正在从内部调用问题。这不会导致语法错误,但在您的案例中几乎不需要
而且,prompt.input
不起作用。它总是未定义的。使用提示调用的返回值:
var response = prompt( ... );
if(response == b+c){
...
此外,您只需初始化随机变量一次。也许您希望在每个循环中都有一个新的对(除非递归就是为了这个目的)。感谢@Asad的注意。您似乎在几个地方跳过了连接运算符。正确的版本如下所示:
prompt("Does " + b + "+" + c + " = ");
再次在此:
alert("well you were wrong " + wrong + " times");
此外:
您的随机数需要在开始时再次随机
环路
问题
不需要递归(您已经在使用循环)
关于用户错误次数的警报需要在循环之外发生
以下是更正的版本:
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");
}
首先,串接中存在错误。应该是
prompt("Does" +b+c+" = ");
alert("well you were wrong " + wrong+" times");
其次,您反复使用函数question()代码>如果没有创建循环的值升级您似乎跳过了多个位置的串联运算符从开始。您现在可以取消勾选所有警告,您将获得大量的反馈,其中只有错误。此外,提示。输入
?你是怎么得到这个密码的?只是你最好的猜测?没什么好等的。这个问题是从内部被调用的,所以当它被调用时,它已经被定义了。@JanDvorak是的,第一次调用它的是什么?很高兴知道。不过,您不需要等待页面加载。@JanDvorak如果您试图在构建DOM之前使用jQuery更改DOM,那么不等待页面加载将成功地使IE 9之前崩溃completely@JanDvorak等待资源加载是一种很好的做法。load仅表示已接收并预处理所有文本文件。所有图像仍在加载,JS代码同时工作。在这种情况下,预测可能发生的事情要容易得多。打得好,我错过了;)对于可能阅读本文的其他用户来说,它仍然是有效的反馈。这不是否决投票的理由。我想引起一个循环10times@Asad已经写了很多应该怎么做。我可以写我自己的,但基本上是一样的。我试图引起循环10次,但每次都会因为随机数而不同。
alert("well you were wrong " + wrong + " times");
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");
}
prompt("Does" +b+c+" = ");
alert("well you were wrong " + wrong+" times");