获取数组值并使用for循环将它们放入不同的div中?

时间:2013-02-28 17:59:48

标签: javascript jquery html

我正在努力学习javascrip + jquery,并努力学习它。因此,试图强制执行DRY规则。

我发现自己遇到了一个问题,我有一个阵列,

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

但其中一个问题似乎是“+ i”,而且我无法摆脱它的正面或反面。

我也知道我可以做到:

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

但这会打破干旱规则。尝试使用for循环完成此操作是否完全错误,还是可以完成?或者只是一个更好的方法来做到这一点!任何人都可以澄清吗?

3 个答案:

答案 0 :(得分:1)

您的第一次尝试应该没问题,只要您在"animals[i]"电话中append()拨打$(".printAnimal"+i).append(animals[i])

另外,我假设您在for循环之外声明了var i;?如果没有,您需要在for循环(for(var i=0....

中声明它

编辑:小提琴的问题

  1. 您永远不会致电startGame()
  2. 你没有包含jQuery
  3. 你不能(据我所知)追加任何不是html的东西 - 在你的情况下,你试图附加一个js对象。您希望最终结果如何?
  4. http://jsfiddle.net/SjHgh/1/是一个工作小提琴,表明append()按你认为的那样工作。

    编辑:忘了更新小提琴。现在纠正链接。

    编辑:重新阅读您对其他答案的回复。 http://jsfiddle.net/SjHgh/3/是你想要的工作小提琴。更多说明:

    1. 您致电new
    2. 时未宣布DICE
    3. 你必须引用你想要的字段(因此dices[i].roll),而不仅仅是对象

答案 1 :(得分: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);
}

答案 2 :(得分: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>");
}