2

jsFiddle 環境で、1 から 10 までの数字を繰り返しなしでランダムに表示するループを作成したいと考えています。

ここでjsFiddle

とりわけ、jsFiddle 環境でのグローバル変数の扱いに問題があります。

感謝します:

  1. jsFiddle のグローバル変数に関する説明
  2. コードを機能させる (望ましい目標: ループを介してランダムな順序で 1 から 10 までの数字を出力する)

ありがとうございました

後世のために、jsFiddle のコードを次に示します。

HTML:

<div id="response"></div>
<input type="button" id="mybutt" value="Get Next" />

JavaScript/jQuery:

var cnt;
var window.arrDone = [];

function nextQues() {
    return Math.floor(Math.random()*3) + 2;
}

$('#mybutt').click(function() {
    cnt++;
    console.log('Count is now: ' + cnt);
    if (cnt < 10) {
        nn = nextQues();
        console.log('Testing: ' + nn);
        if (window.arrDone.indexOf(nn) > -1) {
            console.log('Already Seen: ' + nn);
        }else{
            console.log('FOUND NEW: ' + nn);
            window.arrDone.push(nn);
        }
        $('#mybutt').trigger('click');
    }
});

後世のために:

独自のソリューションを調査しているときにこの質問に出くわした人は、この関連する SO 投稿もチェックする必要があります。

javascript名前空間は汚染されていますか?

  • Joe Enos による回答を必ず読んで、その下のディスカッションにコメントしてください
4

1 に答える 1

3

これを試して:

var cnt = 0;
var window = {};
window.arrDone = [];

デモはこちら

jsfiddle のグローバルは、Web サイトと同じです。最善の方法はno wrap、jsfiddle の左上のメニューで使用し、独自の.ready()機能を使用することです。そうonloadしないと、サイトにない関数でコードがラップされます。

于 2013-09-16T19:17:05.257 に答える