我正在努力学习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循环完成此操作是否完全错误,还是可以完成?或者只是一个更好的方法来做到这一点!任何人都可以澄清吗?
答案 0 :(得分:1)
您的第一次尝试应该没问题,只要您在"animals[i]"
电话中append()
拨打$(".printAnimal"+i).append(animals[i])
{1}}
另外,我假设您在for循环之外声明了var i;
?如果没有,您需要在for循环(for(var i=0....
)
编辑:小提琴的问题
startGame()
http://jsfiddle.net/SjHgh/1/是一个工作小提琴,表明append()按你认为的那样工作。
编辑:忘了更新小提琴。现在纠正链接。
编辑:重新阅读您对其他答案的回复。 http://jsfiddle.net/SjHgh/3/是你想要的工作小提琴。更多说明:
new
DICE
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>");
}