1

私は(多かれ少なかれ)初めてjavascriptを試していますが、次の.jsスクリプトに完全に困惑しています。

var pair = newArray();
var id = newArray();
var pairs = 2;

function newGame(){

    var randomid = 0;

    alert("newGame() called!");

    // Sets a specific part of the image sprite to each pair[].
    for (var i=0 ;i < pairs; i++){
        alert("For loop started!");
        pair[i] = "url(Cardfront.jpg) -"+100 * Math.floor((Math.random()*13)+0)+"px -"+200 * Math.floor((Math.random()*4)+0)+"px";
        // For every pair, assigns a part of the image sprite to two id[]-s.
        alert("Pair " + i + "is " + pair[i]);
        for(var j=0; j < 2; j++) {
            //the range of possible id-s the total number of cards - double the amount of pairs.
            randomid = Math.floor((Math.random()*pairs*2)+0);
            if (id[randomid] === null){
                id[randomid] = pair[i];
                alert("ID " + randomid + "is " + id[randomid]);
            }
            else j--;
        }
    }

    alert("This is called after the for loop!");
}

ボタンからnewGame()を呼び出すと、「newGame()が呼び出されました!」というメッセージが表示されます。そして「これはforループの後に呼び出されます!」アラート、それから何も。

私はこれを理解しようとグーグルと突っついている間を過ごしました、しかし私は私の知恵の終わりにいるようです。

4

3 に答える 3

3

それがあなたのエラーの原因であると私は信じていnewArray()ます。new Array()

幸運を!

編集:私が見つけた他のエラーを修正するには、次のものがあります:

if (id[randomid] === null) {

3=記号付き。2つに変更します。

if (id[randomid] == null) {

そしてそれはあなたがそれを期待するように働くはずです。厳密な比較演算子を実際に使用しようとしているのでない限り、コードにバグがある他の何かがあります。

于 2012-12-18T08:08:18.710 に答える
1

このコードでは、次のようになります。

if (id[randomid] === null){
    id[randomid] = pair[i];
    alert("ID " + randomid + "is " + id[randomid]);
}
else j--;

if/else速記を混ぜることはできません:

if(something)
    //Do X
else
    //Do y

角かっこ表記の場合:

if(something){
    //Do X
} else {
    //Do y
}

だから、あなたの周りに角かっこを入れてくださいelse

if (id[randomid] === null){
    id[randomid] = pair[i];
    alert("ID " + randomid + "is " + id[randomid]);
} else {
    j--;
}
于 2012-12-18T08:19:25.143 に答える
0

forループは次のようになります。

for (var i=0; i<pairs.length; i++) {
   ...
}

pairsは強制的に数値(この場合はゼロ)になるため、最初の比較( )は、決して真にならないものとi<pairs同じになります。0<0

:-(

于 2012-12-18T08:07:34.357 に答える