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 を使用しているときに変数 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では、すべての名前と値を囲むグローバル スコープに存在します。2 番目の例xでは、関数内にのみ存在しますassignX

于 2011-05-06T21:45:08.663 に答える