Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.addClass是否错过了在javascript中使用for循环动态创建的最后一个元素?_Javascript_Jquery_Dom Manipulation - Fatal编程技术网

.addClass是否错过了在javascript中使用for循环动态创建的最后一个元素?

.addClass是否错过了在javascript中使用for循环动态创建的最后一个元素?,javascript,jquery,dom-manipulation,Javascript,Jquery,Dom Manipulation,我正在尝试使用for循环和.addClass以及jquery向动态创建的div添加一个唯一的类。循环正在成功地将唯一类添加到所有创建的div中,除了最后的迭代(.square143) for循环还向所有这些动态创建的元素(.art)添加了一个统一类,并且正在成功地这样做 我遇到的另一个问题可能与此有关,那就是该程序正在创建两倍于预期的div 基本上,我试图向for循环创建的最终迭代div添加一个唯一的类 函数addElementEllsworth(){ //For循环将动态创建指定数量的空di

我正在尝试使用for循环和.addClass以及jquery向动态创建的div添加一个唯一的类。循环正在成功地将唯一类添加到所有创建的div中,除了最后的迭代(.square143)

for循环还向所有这些动态创建的元素(.art)添加了一个统一类,并且正在成功地这样做

我遇到的另一个问题可能与此有关,那就是该程序正在创建两倍于预期的div

基本上,我试图向for循环创建的最终迭代div添加一个唯一的类

函数addElementEllsworth(){
//For循环将动态创建指定数量的空div
对于(变量i=0;i<144;i++){
//实际上在这里创建div
var newDiv=document.createElement(“div”);
var currentDiv=document.getElementById(“div1”);
//为更改整个网格的CSS提供所有创建的div
$(函数(){
美元(“div”).addClass(“艺术”);
});
//为每个div指定一个唯一的类。然后使用函数为该类指定一个随机颜色(RGB值)。
$(“div”)。每个(功能(i){
$(this).addClass(“square”+i);
$(this.css('backgroundColor',randomEllsworthColor());
});
//将它们放入文件正文中
document.body.insertBefore(newDiv,currentDiv);
}
}addElementEllsworth();
//此函数将返回随机颜色(RGB值)。函数通过组合正确的RGB语法和在不同函数中创建的随机数来形成返回值。
函数随机颜色(){
var maxRGBValue=255;
var r=生成域(maxRGBValue);
var g=生成域(maxRGBValue);
var b=生成域(maxRGBValue);
var theColor=“rgb”(“+r+”、“+g+”、“+b+”);
返回颜色;
}
//返回一个十六进制值,该值与SFMOMA中Kelly的光谱绘制相关
函数randomEllsworthColor(){
//颜色六边形取自SFMOMA的Ellsworth Kelly绘画
EllsworthColor=[“#2f2d2d”、“#c6becd”、“#ff8635”、“#3b354c”、“#94d35a”、“#f7f25e”、“#0170c1”、“#243881”、“3550”、“#b38cb9”、“#7bc653”、“#2624”、“#F20E”、“#F30E”];
//函数从上述数组返回一个值。通过从数组生成随机索引,可以随机选择索引。
返回EllsworthColor[生成器名称(EllsworthColor.length)];
}
函数生成器域(num){
返回Math.floor(Math.random()*Math.floor(num));
}
.art{
浮动:左;
宽度:08.33333%;
填充底部:08.333333%;/*=宽高比为1:1的宽度*/
利润率:0%;
背景色:青色;/*注释将隐藏所有无色方块*/
}

最后一个div没有您期望的类的原因是
$(“div”)。每个(函数(i){
选择页面上已经存在的div,而在您的代码中,最新的
div
直到
document.body.insertBefore
才添加到页面中

我已经创建了一支笔来展示您的代码在没有JQuery的情况下的外观,即使用普通Javascript


希望这能有所帮助。

为什么要将jQuery与原生DOM API混合在一起?这是添加“art”类的
$()
方法;为什么要将其包装为jQuery“DOM就绪”处理程序?嗯,我不太明白你的问题(我是新手)。为什么我混合使用jquery和本机dom?据我所知,这是将CSS动态应用于类的唯一方法?至于将$()添加到“art”类中,我应该使用.className对其进行分类吗?jquery是一个糟糕的解决方案吗?那不是真的。有没有更好的方法将随机生成的颜色应用于类?或者“正确”的方式?您使用jQuery来设置颜色。我的问题更多的是关于您为什么使用本机API。这非常有效-谢谢!如果其他人也有这个问题,似乎将“document.body.insertBefore”移到“.each”之前也能解决这个问题。