2013-02-28 102 views
0

我努力學習javascrip + jquery自己,也試圖學習它的權利。因此試圖執行DRY規則。獲取數組值並將它們與for循環放在不同的div中?

我發現自己套牢在那裏我有一個數組的一個問題,

var animals = [4]; 

功能,

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

和循環的邪惡。我也有5個div,分別叫做printAnimal1,printAnimal2等等。我希望打印出數組中的每個值。

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]"); 
} 

但其中一個問題似乎是「+我」,我不能讓頭或尾巴出來。

我也知道,我可以簡單地這樣做:

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

但是,這會違反了DRY原則。試圖用for循環來做這件事是否都是錯的,或者可以這樣做?還是有更好的方法來做到這一點!任何人都可以澄清?

回答

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/是工作提琴顯示,追加()因爲你認爲它應該工作。

編輯:忘了更新小提琴。現在正確鏈接。

編輯:重新讀取您對有關您想要的其他答案的答覆。 http://jsfiddle.net/SjHgh/3/與你想要的是一個工作小提琴。更多注意事項:

  1. 你沒有申報new當你叫DICE
  2. 你必須引用你想要的領域,(因此dices[i].roll),而不僅僅是對象
+0

我確實如你所說,我沒有得到任何錯誤,但它不顯示arrayvalues到我的div。實際上,當我嘗試用$(「。printAnimal3」)。append(「animals [i]」)輸入行時,那也不管用.. – Cammy 2013-02-28 18:50:16

+0

這是錯誤的。他的代碼中有太多錯誤,因此無法使用此建議。例如: : var animals = [4];應該是var animals = [];或var animals = new Array(); $這應該是$(this) 如果你沒有第一次創建,你是正確的關於for循環變量需要在裏面創建 – iAmClownShoe 2013-02-28 18:50:34

+0

對不起她對不起! :) – iAmClownShoe 2013-02-28 19:02:48

0

就幾點意見:

這是聲明數組只有一個項目和該項目是數字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); 
} 
+0

我試着讓陣列好看又空,但仍然無法正常工作。我試圖做一個骰子游戲,它有5個骰子,每個骰子有6個方面(規則骰子),它將擲出所有5個骰子,並在div中顯示結果。 – Cammy 2013-02-28 19:03:36

+0

這與原始答案有什麼關係? – DanC 2013-02-28 19:49:48

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>"); 
} 
+0

謝謝!這將工作,除了我有5個現有的div,我想要打印的價值:-)科琳發現我的問題! – Cammy 2013-02-28 20:26:32

相關問題