帮助将变量添加到自身和随机数(javascript)

时间:2011-05-06 21:39:03

标签: javascript random nan dice

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

帮助会非常受欢迎。 谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

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

请记住,当您在其前面声明一个带有关键字“var”的变量时,该变量将被视为本地变量。没有'var'的变量被认为是全局的。

答案 1 :(得分:0)

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

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

答案 2 :(得分: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中。