0

2つのランダムなサイコロを振るシミュレーションを生成する2つの変数を保存しました。次のような別の段落にそれらを追加しようとしています。ただし、それらを追加する行は「NaN」を生成します。助言がありますか?

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8"/>
    <title>Rolling Two Dice</title>
  </head>
  <body>
    <p>Your first die rolled a <script>var roll1 = document.write(1 +
    Math.floor(6 * Math.random()))</script>.</p>
    <p>Your second die rolled a <script>var roll2 = document.write(1 +
    Math.floor(6 * Math.random()))</script>.</p>
    <p>The total of your rolls is <script>document.write(roll1 +roll2)</script>.</p>
</body>
</html>
4

3 に答える 3

2

からの戻り値ではなく、数値を保存しますdocument.write(何が返されるかわかりません)。また、HTMLをjavascriptから分離しました。これは、使用するdocument.writeのは良い習慣ではなく、関数型コード(javascript)とプレゼンテーションコード(HTML)を混在させることは悪い習慣であるためです。

HTML:

<body>
    <p>Your first die rolled a <span id="roll1"></span>.</p>
    <p>Your second die rolled a <span id="roll2"></span>.</p>
    <p>The total of your rolls is <span id="total"></span>.</p>
</body>

JS:

var roll1 = 1 + Math.floor(6 * Math.random());
var roll2 = 1 + Math.floor(6 * Math.random());
var total = roll1 + roll2;
document.getElementById('roll1').textContent = roll1;
document.getElementById('roll2').textContent = roll2;
document.getElementById('total').textContent = total;

*textContentプロパティは一部のブラウザでは機能しないことに注意してください。

于 2012-09-11T17:23:50.003 に答える
0

変数に値を割り当ててから、変数をドキュメントに書き込む必要があります。

<script>var roll1 = 1 + Math.floor(6 * Math.random());  document.write(roll1)</script>

また、jbabeyで示されているように、すべてのスクリプトを1つのブロックに移動することをお勧めします。したがって、HTML全体にJSの小さな行はありません。単一のブロックでjavascriptを使用して、スパンの内容を値で更新します。

于 2012-09-11T17:21:46.570 に答える
0

あなたのサンプルによると:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8"/>
    <title>Rolling Two Dice</title>
    <script>
        var roll1 = 1 + Math.floor(6 * Math.random());
        var roll2 = 1 + Math.floor(6 * Math.random());
        var total = roll1 + roll2
    </script>
</head>
<body>
<p>Your first die rolled a <script>document.write(roll1)</script>.</p>
<p>Your second die rolled a <script>document.write(roll2)</script>.</p>
<p>The total of your rolls is <script>document.write( total )</script>.</p>
</body>
</html>

問題は主に:

<script>var roll1 = document.write(1 + Math.floor(6 * Math.random()))</script>

document.writeは、変数に割り当てることができる値を返しません。

于 2012-09-11T17:27:03.057 に答える