Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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
.setAttribute不';不能在for-loop-JavaScript中工作_Javascript_Html_Css_For Loop - Fatal编程技术网

.setAttribute不';不能在for-loop-JavaScript中工作

.setAttribute不';不能在for-loop-JavaScript中工作,javascript,html,css,for-loop,Javascript,Html,Css,For Loop,我的JS脚本有一个小问题。我试图给数组中的每个元素一个不同的数字,这些数字也在数组中设置。当然我用了for循环。现在在for循环之外,这一切都很好 var i = 0; document.getElementsByClassName("MosaikBilder")[i].setAttribute("value", BilderListe[i]); 但一旦我将其放入for循环,整个脚本就不可执行了。浏览器根本不会加载脚本 var AlleBilder = document.getElements

我的JS脚本有一个小问题。我试图给数组中的每个元素一个不同的数字,这些数字也在数组中设置。当然我用了for循环。现在在for循环之外,这一切都很好

var i = 0;
document.getElementsByClassName("MosaikBilder")[i].setAttribute("value", BilderListe[i]);
但一旦我将其放入for循环,整个脚本就不可执行了。浏览器根本不会加载脚本

var AlleBilder = document.getElementsByClassName("MosaikBilder");
for(i=0; i<AlleBilder.length -1; i++){
    document.getElementsByClassName("MosaikBilder")[i].setAttribute("value", BilderListe[i]);
}
BilderListe是一个普通数组,由以下JS生成:

function Zahlenzuweisung(){
    for(var i=0 ; i<BilderListe.length; i++){
        BilderListe[i] = Math.round(Math.random()*1000);
        if(BilderListe[i] > 1000){
            BilderListe[i] = 1000;
        }
    }
函数Zahlenzuweisung(){
对于(变量i=0;i 1000){
BilderListe[i]=1000;
}
}
该数组包含15个随机生成的数字,看起来不错。阵列的其他所有功能都可以正常工作

有什么建议可以解释为什么在我将一行代码放入for循环后,整个脚本不会立即执行

非常感谢您的任何帮助,我是一个比较新的人,非常感谢您的帮助:)

编辑:这是小提琴。这是我的第一次,所以可能会在某些方面失败


注意:脚本背后的整个想法是在每次加载页面时重新排列图片。我首先生成一个随机数列表,没有任何双倍的随机数。一旦这样做了,我想得到一个列表中的所有图片,并给他们一个随机数。然后我想对这个列表进行排序,删除图片并按新的顺序重新排列。为了存储生成的数字,我考虑使用“value”属性。正如我所说,它似乎在for循环之外工作,但在内部却不工作

我无法真正理解如何生成“BilderListe”数组,但包含15个随机生成的数字,每个数字最多1000个,您可以在“Zahlenzuweisung”内创建一个数组,代码如下:

var BilderListe = [];

for (var i = 0; i < 15; i++) {
  var num = Math.round(Math.random()*1000);
  if(num > 1000){
    num = 1000;
    BilderListe.push(num);
  }else {
    BilderListe.push(num);
  }
}
函数之外的声明发现问题:

这实际上是你在小提琴上看到的最后一个功能。 我不知道为什么,但由于函数与Allebider一起工作 这可能会造成一些并发症


感谢所有帮助过我的人!:)

你能做一个js提琴吗?首先,不要在循环中重复你的选择器。使用你正在循环的变量。我认为我们遗漏了一个更大的问题<代码>img元素没有值属性。。。。你的逻辑没有意义。实际上你应该访问数组[i],所以在你的代码中,它应该是forloop中的allebider[i],非常感谢。我加了一把尽可能好的小提琴(这是我的第一把小提琴)和一张小纸条来理解整个剧本。嘿,谢谢你的帮助!我用小提琴编辑了我的文章,在那里你可以看到整个剧本。BilderListe是全局的,for循环与您发布的一样。但它仍然无法加载。只要我更改for循环并删除.setAttribute代码,它就会再次打开。
function Zahlenzuweisung(){
    for(var i=0 ; i<BilderListe.length; i++){
        BilderListe[i] = Math.round(Math.random()*1000);
        if(BilderListe[i] > 1000){
            BilderListe[i] = 1000;
        }
    }
var BilderListe = [];

for (var i = 0; i < 15; i++) {
  var num = Math.round(Math.random()*1000);
  if(num > 1000){
    num = 1000;
    BilderListe.push(num);
  }else {
    BilderListe.push(num);
  }
}
var AlleBilder = document.getElementsByClassName("MosaikBilder");
for(i=0; i<AlleBilder.length -1; i++){
  AlleBilder[i].setAttribute("value", BilderListe[i]);
}
var BilderListe = [];