1

我正在制作一个简单的掷骰子,这对我来说似乎是一个不错的第一个项目,并且可以帮助其他人学习 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>

帮助将不胜感激。谢谢!

4

3 回答 3

2

这是因为在 d6() 中使用变量 x 时没有初始化它。2个功能的范围是不同的。

您需要 x 成为全局变量。为此,请使用以下代码结构:

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

请记住,当您在声明变量之前使用关键字“var”时,该变量被视为本地变量。没有“var”的变量被认为是全局的。

于 2011-05-06T21:43:11.337 回答
0

您的x变量是函数的本地变量。更改x为全局变量:

var x;
function load() { ... }
function d6() { ... }
于 2011-05-06T21:44:38.703 回答
0

使用 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

于 2011-05-06T21:45:08.663 回答