私はクラスから要素の背景画像を設定するためにJavaScriptを使用しています。コードは大部分は機能しますが、コードを実行すると未定義の変数があります。私はMath.Random()を使用して変数の数値を取得しています。私のコードでの問題点(あるいは、少なくとも私はそれだと思う): JavaScript:配列から乱数を使用しているときに、定義されていない値が返されるのはなぜですか?
var RandomContentDiv = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
var cd = RandomContentDiv[Math.round(Math.random()*RandomContentDiv.length-1)];
console.log(cd);
私は数字が出力されているかを確認する
console.log(cd);
を置きます。結果は得られますが、結果は問題の解決には役立ちません。コードを2回実行してテストし、通常どんなものが得られるかを示します。
テスト1:
Number: 5
Number: 13
Number: 10
Number: 1
Number: 10
Number: 6
Number: 10
Number: 3
Number: 2
Number: 15
Number: 2
Number: 3
Number: 8
Number: 15
Number: 12
Number: 7
Number: 9
Number: 2
Number: 0
Number: 8
Number: 10
Number: 3
Number: 14
Number: 13
Number: 9
Number: 1
Number: 15
Number: 13
Number: 3
Number: 2
Number: 4
Number: 14
Number: 11
Number: 0
Number: 15
Number: 7
Number: 6
Number: 1
Number: 4
Number: 7
Number: 8
Number: 6
Number: 7
Number: 4
Number: 10
Number: 0
Number: 12
Number: 11
Number: 2
Number: 7
Number: 2
Number: 11
Number: 13
Number: 6
Number: 0
Number: 5
Number: 1
Number: 2
Number: 7
Number: 8
Number: 2
Number: 13
Number: 4
Number: 3
Number: 7
Number: 15
Number: 5
Number: 1
Number: 0
Number: 2
Number: 11
Number: 8
Number: 10
Number: 12
Number: 11
Number: 1
Number: 12
Number: 11
Number: 12
Number: 0
Number: 6
Number: 8
Number: 1
Number: 11
Number: 1
Number: 12
Number: undefined
テスト2:
Number: 13
Number: 2
Number: 9
Number: 0
Number: 2
Number: 0
Number: 11
Number: 3
Number: 5
Number: 3
Number: 11
Number: 3
Number: 14
Number: 15
Number: 9
Number: 8
Number: 11
Number: 12
Number: 10
Number: 3
Number: 9
Number: 0
Number: undefined
私はこの問題は、この文から来ていると思う:RandomContentDiv[Math.round(Math.random()*RandomContentDiv.length-1)];
が、私はそれを修正する方法がわかりませんJavaScriptのためにMath
で十分に深く掘り下げていないからです。私が知っていることは、誰かが丸めたときに不正確な数字を与えるMath.Round
について何か言ったということです(つまり1.5は1に丸めることができます)。しかし、これはこれに当てはまるとは思いません。誰かがそれが何か問題を引き起こしているかどうかを教えてくれますか?
質問には、あなたのコードが「すべて」含まれないようにしてください。コードを、問題を再現する最短の例に減らすべきです。つまり、 'Math.random()* length-1'は間違っています。 '*'は '-'より優先順位が高いため、操作の順序が間違っています。 ' - 'の前に ' - 'が来るように括弧を加えることで修正してください。 – meagar
@meagarそれは "私のJavascriptコードはすべてここにあります"と私はあなたの解決策を試してみます –
私は知っています。あなたの問題は、単一の3行のループで再現することができ、そのループを含める必要があります。これ以上何もない。 – meagar