我正在制作一个简单的骰子滚轮,这对我来说似乎是一个很好的第一个项目,并且可以帮助其他人学习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>
帮助会非常受欢迎。 谢谢!
答案 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
中。