Javascript 全局变量不工作

Javascript 全局变量不工作,javascript,global-variables,Javascript,Global Variables,当我尝试时,代码对键变量说“undefined”。我认为它不是全局的,即使我没有把它放在函数中。 有人知道如何解决这个问题吗?非常感谢您的帮助 <html> <head> <script> var key = Math.floor(Math.random() * 27 + 96); function lespres(event) { var p = 0; document.getElementById('pedonummer').inne

当我尝试时,代码对键变量说“undefined”。我认为它不是全局的,即使我没有把它放在函数中。 有人知道如何解决这个问题吗?非常感谢您的帮助

<html>
<head>
<script>

var key = Math.floor(Math.random() * 27 + 96);

function lespres(event) {

    var p = 0;
    document.getElementById('pedonummer').innerHTML = "random getal" + key;
    var x = event.which;
    document.getElementById('teest').innerHTML = "KEY PRESSED: " + x;
    if(x == key) {
        var p = p + 1;
        document.getElementById('punten').innerHTML = p + "points";
        var key = Math.floor(Math.random() * 27 + 96);
    }
}

</script>
</head>
</html>

var key=Math.floor(Math.random()*27+96);
功能lespres(事件){
var p=0;
document.getElementById('pedonummer').innerHTML=“random getal”+键;
var x=事件,即:;
document.getElementById('teest').innerHTML=“按键:”+x;
if(x==键){
var p=p+1;
document.getElementById('punten').innerHTML=p+“点”;
var key=Math.floor(Math.random()*27+96);
}
}

您已经使用
var
声明了两个名为
key
的变量


在函数内部,在
之后定义的一个被在
document.getElementById('punten').innerHTML=p+“points”之后定义的一个屏蔽

您已经使用
var
声明了两个名为
key
的变量


在函数内部,在
之后定义的一个被在
document.getElementById('punten').innerHTML=p+“points”之后定义的一个屏蔽

您对其进行了双重定义。一个在全球,另一个在本地

您必须从本地关键字中删除
var
关键字

<html>
<head>
<script>

var key = Math.floor(Math.random() * 27 + 96);

function lespres(event) {

    var p = 0;
    document.getElementById('pedonummer').innerHTML = "random getal" + key;
    var x = event.which;
    document.getElementById('teest').innerHTML = "KEY PRESSED: " + x;
    if(x == key) {
        var p = p + 1;
        document.getElementById('punten').innerHTML = p + "points";
        key = Math.floor(Math.random() * 27 + 96); // HERE
    }
}

</script>
</head>
</html>

var key=Math.floor(Math.random()*27+96);
功能lespres(事件){
var p=0;
document.getElementById('pedonummer').innerHTML=“random getal”+键;
var x=事件,即:;
document.getElementById('teest').innerHTML=“按键:”+x;
if(x==键){
var p=p+1;
document.getElementById('punten').innerHTML=p+“点”;
key=Math.floor(Math.random()*27+96);//这里
}
}

您对其进行了双重定义。一个在全球,另一个在本地

您必须从本地关键字中删除
var
关键字

<html>
<head>
<script>

var key = Math.floor(Math.random() * 27 + 96);

function lespres(event) {

    var p = 0;
    document.getElementById('pedonummer').innerHTML = "random getal" + key;
    var x = event.which;
    document.getElementById('teest').innerHTML = "KEY PRESSED: " + x;
    if(x == key) {
        var p = p + 1;
        document.getElementById('punten').innerHTML = p + "points";
        key = Math.floor(Math.random() * 27 + 96); // HERE
    }
}

</script>
</head>
</html>

var key=Math.floor(Math.random()*27+96);
功能lespres(事件){
var p=0;
document.getElementById('pedonummer').innerHTML=“random getal”+键;
var x=事件,即:;
document.getElementById('teest').innerHTML=“按键:”+x;
if(x==键){
var p=p+1;
document.getElementById('punten').innerHTML=p+“点”;
key=Math.floor(Math.random()*27+96);//这里
}
}

这确实是个错误。但是如果我想要一个新的随机数(键),如果我按下的键等于最初生成的随机键,该怎么办?(所以在“if(x==key)”之后)我尝试创建一个生成var的函数,但没有成功work@sirolf仔细阅读答案,并检查代码与您的代码是否存在差异。您做得很好,但只需删除条件中的
var
键即可。@sirolf如果再次运行该函数,旧的随机数将被抛出,并且您的变量将采用新的随机数值。这确实是错误。但是如果我想要一个新的随机数(键),如果我按下的键等于最初生成的随机键,该怎么办?(所以在“if(x==key)”之后)我尝试创建一个生成var的函数,但没有成功work@sirolf仔细阅读答案,并检查代码与您的代码是否存在差异。您做得很好,但只需删除条件中的
var
键即可。@sirolf如果您再次运行该函数,旧的随机数将被抛出,并且您的变量将具有新的随机值。谢谢!但还是有问题,;当我按下的键正确时生成一个新的“键”(与var键相同),谢谢!但还是有问题,;当我按下的键正确时生成一个新的“键”(与var键相同)