0

私は自分でjavascrip+jqueryを学ぼうと努力しており、それを正しく学ぼうとしています。したがって、DRYルールを適用しようとしています。

配列があるという問題に悩まされていますが、

var animals = [4];

機能、

var legs = function(amount){
    this.amount = amount;
    this.body = Math.floor(Math.random()*amount)+1;
}

そして悪のforループ。また、printAnimal1、printAnimal2などと呼ばれる5つのdivがあります。配列内の各値をに出力したいと思います。

for(i = 0; i < animals.length; i++){
        animals[i] = new legs(6);
        $(".printAnimal"+i).append("animals[i]");
}

自分は正しいことに近づいているように感じますが、理解できないようです。私も次のようなことを試しました:

for(i = 0; i < animals.length; i++){
        animals[i] = new legs(6);
            $this = $(".printAnimal");
            $(this+i).append("animals[i]");
}

しかし、問題の1つは「+ i」のようで、私はそれから頭や尾を作ることができません。

私はまた、私が簡単にできることを知っています:

 $(".printAnimal1").append("animals[i]");
 $(".printAnimal2").append("animals[i]");
 $(".printAnimal3").append("animals[i]");
...

しかし、それはDRYルールに違反します。forループでこれを実行しようとするのはすべて間違っていますか、それとも実行できますか?それとも、それを行うためのより良い方法がありますか?誰かが明確にすることができますか?

4

3 に答える 3

1

電話"animals[i]"で引用符を外す限り、最初の試みは問題ありません( )append()$(".printAnimal"+i).append(animals[i])

var i;また、 forループの外側で宣言したと思いますか?そうでない場合は、forループで宣言する必要があります(for(var i=0....

編集:あなたのフィドルの問題

  1. あなたは決して電話しませんstartGame()
  2. jQueryを含めなかった
  3. (私が知る限り)html以外のものを追加することはできません-あなたの場合、あなたはjsオブジェクトを追加しようとしています。最終結果をどのように見せたいですか?

http://jsfiddle.net/SjHgh/1/は、append()が期待どおりに機能することを示す実用的なフィドルです。

編集:フィドルを更新するのを忘れました。今すぐリンクを修正してください。

編集:あなたが欲しいものについての他の答えへのあなたの応答を読み直してください。http://jsfiddle.net/SjHgh/3/は、あなたが望むものを使った実用的なフィドルです。その他の注意事項:

  1. newあなたが電話したときにあなたは宣言しませんでしたDICE
  2. dices[i].rollオブジェクトだけでなく、必要なフィールドを参照する必要があります(したがって)
于 2013-02-28T18:01:31.093 に答える
0

ほんの少しのコメント:

これは、アイテムが1つだけの配列を宣言しており、そのアイテムは4番です。

var animals = [4]; 

それでもその配列が必要な場合は、次のようなことを行う必要があります。

var animals = []; // A shiny new and empty array

次に、次のようにforループ内にアイテムを追加します。

animals.push(new legs(6)); //This will add a new legs object to the end of the array

また、divに追加した後に表示されると予想されるコンテンツは何ですか?

レッグの数が必要な場合は、それを要素に追加する必要があります(レッグオブジェクトを直接追加するのではありません)。

for(i = 0; i < animals.length; i++){
    animals.push(new legs(6));
    $(".printAnimal"+i).append(animals[i].body);
}
于 2013-02-28T18:08:57.920 に答える
0

あなたのコメントに従って別の答えを追加する

var i, dicesThrown = [];

function throwDice(){
    return Math.ceil(Math.random() * 6);
}

//Throw 5 dices
for (i=0 ; i<5 ; i++){
    dicesThrown.push( throwDice() );
}

//Show the results
for (i=0 ; i<5 ; i++){
    $("body").append("<div>Dice " + (i+1) + ": " + dicesThrown[i] +"</div>");
}
于 2013-02-28T19:50:36.480 に答える