Javascript 从数组中生成每个具有随机类的div
我很难理解为什么下面的函数没有达到它应该达到的效果:Javascript 从数组中生成每个具有随机类的div,javascript,jquery,html,Javascript,Jquery,Html,我很难理解为什么下面的函数没有达到它应该达到的效果: function example() { var $element; var rndClass; var classesArr = ['one', 'two', 'three']; var container = $('.container'); for(i=0; i<10; i++) { rndClass = Math.floor(Math.random()*classesAr
function example() {
var $element;
var rndClass;
var classesArr = ['one', 'two', 'three'];
var container = $('.container');
for(i=0; i<10; i++) {
rndClass = Math.floor(Math.random()*classesArr.length);
$element = $('</div>', {'class': 'card '+classesArr[rndClass]+''});
$(container).append($element);
}
}
函数示例(){
var$元素;
变量rndClass;
var classesArr=['1','2','3'];
var container=$('.container');
对于(i=0;i要在仍然随机选择的情况下获得更多或更少的类类型,可以执行以下操作
jQuery(函数($){
变量类=['card-1'、'card-2'、'card-3'],
classes\u cpy=classes.slice(),
i=10,
跑;
对于(;我--;){
ran=(Math.random()*classes_cpy.length)| 0;
$('body')。追加(
$('', {
“文本”:我,
//从数组中删除并返回随机字符串
'class':'card'+class_cpy.拼接(ran,1)[0]
})
);
//当数组为空时,使用值重新加载该数组
如果(类\u cpy.length==0){
classes_cpy=classes.slice();
}
}
});
.card-1{背景色:绿色;}
.card-2{背景色:红色;}
.card-3{背景颜色:粉红色;}
.card{边框:1px纯白;}
要在仍然随机选择的情况下获得更多或更少的类类型,可以执行以下操作
jQuery(函数($){
变量类=['card-1'、'card-2'、'card-3'],
classes\u cpy=classes.slice(),
i=10,
跑;
对于(;我--;){
ran=(Math.random()*classes_cpy.length)| 0;
$('body')。追加(
$('', {
“文本”:我,
//从数组中删除并返回随机字符串
'class':'card'+class_cpy.拼接(ran,1)[0]
})
);
//当数组为空时,使用值重新加载该数组
如果(类\u cpy.length==0){
classes_cpy=classes.slice();
}
}
});
.card-1{背景色:绿色;}
.card-2{背景色:红色;}
.card-3{背景颜色:粉红色;}
.card{边框:1px纯白;}
我认为
$(function(){
function example() {
var $element = null;
var rndClass = 0;
var classesArr = ['one', 'two', 'three'];
var $container = $('.container');
var MAX_ELEMENTS = 10;
for(;MAX_ELEMENTS--;) {
rndClass = Math.floor(Math.random()*classesArr.length);
$element = $('<div></div>', {
'class': 'card '+ classesArr[rndClass],
'text': MAX_ELEMENTS
});
$container.append($element);
}
}
example();
});
$(函数(){
函数示例(){
var$element=null;
var rndClass=0;
var classesArr=['1','2','3'];
var$container=$('.container');
var MAX_元素=10;
对于(;MAX_元素--;){
rndClass=Math.floor(Math.random()*classesArr.length);
$element=$(“”{
“类”:“卡”+classesArr[rndClass],
“文本”:最大元素数
});
$container.append($element);
}
}
示例();
});
我认为
$(function(){
function example() {
var $element = null;
var rndClass = 0;
var classesArr = ['one', 'two', 'three'];
var $container = $('.container');
var MAX_ELEMENTS = 10;
for(;MAX_ELEMENTS--;) {
rndClass = Math.floor(Math.random()*classesArr.length);
$element = $('<div></div>', {
'class': 'card '+ classesArr[rndClass],
'text': MAX_ELEMENTS
});
$container.append($element);
}
}
example();
});
$(函数(){
函数示例(){
var$element=null;
var rndClass=0;
var classesArr=['1','2','3'];
var$container=$('.container');
var MAX_元素=10;
对于(;MAX_元素--;){
rndClass=Math.floor(Math.random()*classesArr.length);
$element=$(“”{
“类”:“卡”+classesArr[rndClass],
“文本”:最大元素数
});
$container.append($element);
}
}
example();
});
已更新
试一试
var primaryClass=“卡”;
var additionalClasses=[“一”、“二”、“三”];
var clones=$.map(数组(additionalClasses.length+1),函数(){
return[$.extend([],additionalClasses)]
});
var i=0;
var集合=数组(10);
var elems=$.map(集合、函数(el、idx){
i=!!克隆[i]。长度?i:i+1;
返回$(“”){
“文本”:idx,
“阶级”:初级阶级
+ " "
+初级班
+ "-"
+克隆[i].拼接(Math.floor(Math.random()*克隆[i].长度),1)
})[0]
});
控制台日志(elems);
$(“body”).append(elems);
已更新
试一试
var primaryClass=“卡”;
var additionalClasses=[“一”、“二”、“三”];
var clones=$.map(数组(additionalClasses.length+1),函数(){
return[$.extend([],additionalClasses)]
});
var i=0;
var集合=数组(10);
var elems=$.map(集合、函数(el、idx){
i=!!克隆[i]。长度?i:i+1;
返回$(“”){
“文本”:idx,
“阶级”:初级阶级
+ " "
+初级班
+ "-"
+克隆[i].拼接(Math.floor(Math.random()*克隆[i].长度),1)
})[0]
});
控制台日志(elems);
$(“body”).append(elems);
for(;i--;)位是什么?它只是倒计时到0。@Ilja我要回答你之前的问题,我已经发布了一个答案,然后它被删除了。我还在另一个浏览器选项卡中打开了代码。很抱歉,我正要发布代码,jsFidle崩溃了,所以我开始了新的一个。为什么(;i--;)bit?它只是倒数到0。@Ilja我正要回答你之前的问题,我已经发布了一个答案,然后它被删除了。我仍然在另一个浏览器选项卡中打开了代码。很抱歉,我正要发布我的代码,jsFidle崩溃了,所以我启动了一个新的。你的代码有拼写错误,应该是。你的代码有拼写错误,应该是.Super-neat,但它没有解决问题的这一部分:在10个分区中应该有或多或少相同数量的这些内容。这不会是谎言,我必须console.log(JSON.stringify(clone))
在map函数的顶部,以了解这是如何工作的。这是一个非常酷的实现+1。@robbmj fwiw,在克隆,返回[additionalClasses.slice()]
可以替代返回[$.extend([],additionalClasses)]
Super-neat,但它并没有解决这部分问题:在10个分区中,应该有或多或少相同数量的这些应用。我必须console.log(JSON.stringify(clone))
位于map函数的顶部,以了解其工作原理。这是一个非常酷的实现+1。@robbmj fwiw,在克隆,返回[additionalClasses.slice()]
可以替换为返回[$.extend([],additionalClasses)]