2013-02-28 114 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

相关问题