Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
帮助将变量添加到self和random number(javascript)_Javascript_Random_Nan_Dice - Fatal编程技术网

帮助将变量添加到self和random number(javascript)

帮助将变量添加到self和random number(javascript),javascript,random,nan,dice,Javascript,Random,Nan,Dice,我正在制作一个简单的掷骰子游戏,这对我来说似乎是一个不错的第一个项目,也可以帮助其他人学习javascript。当你掷骰子(有一个按钮)时,它应该加到总数中(有一个清晰的按钮),但上面写着NaN。这是我的密码: <html> <body> <script type="text/javascript"> function load() { document.getElementById("press").value=" " var x=0 } function

我正在制作一个简单的掷骰子游戏,这对我来说似乎是一个不错的第一个项目,也可以帮助其他人学习javascript。当你掷骰子(有一个按钮)时,它应该加到总数中(有一个清晰的按钮),但上面写着NaN。这是我的密码:

<html>
<body>
<script type="text/javascript">
function load()
{
document.getElementById("press").value=" "
var x=0
}
function d6()
{
var x=x+(Math.floor((Math.random() * 6) + 1));
document.getElementById("press").value=(x)
}
load()
</script>
<input type="button" value="Roll d6" onclick="d6()"/>
<input type="text" id="press"/>
</b>
<input type="button" value="Clear" onclick="load()"/>
</body>
</html>

函数加载()
{
document.getElementById(“按”).value=“”
变量x=0
}
函数d6()
{
VarX=x+(数学地板((数学随机()*6)+1));
document.getElementById(“press”).value=(x)
}
加载()
我会非常感激你的帮助。
谢谢

之所以发生这种情况,是因为在d6()中使用变量x时没有初始化它。这两个功能的范围不同

你需要x是一个全局变量。为此,请使用以下代码结构:

x = 0
function load() { ... }
function d6() { ... } 

请记住,当您声明一个前面带有关键字“var”的变量时,该变量被视为局部变量。没有“var”的变量被视为全局变量。

您的
x
变量是函数的局部变量。将
x
更改为全局变量:

var x;
function load() { ... }
function d6() { ... }

当使用JavaScript时,考虑名称和值的范围是很重要的。考虑这两者之间的差异:

var x = 2;
function assignX(v) {
    x = v;
}
print(x); // 2 
assignX(3);
print(x); // 3
这是:

function assignX(v) {
    var x = v;
}
print(x); // undefined
assignX(3);
print(x); // undefined

在第一个示例中,
x
存在于包含所有名称和值的全局范围中。在第二个示例中,
x
仅存在于函数
assignX

morgan w-k中,而不是删除。将其留给其他人查找,他们可能有相同的问题如果您有解决方案,您可以添加一个答案,说明如何使可能有相同问题的其他用户受益。当你自己弄明白这个问题时,删除它并不是StackOverflow的工作原理。