Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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
Javascript 每次循环时按id获取元素_Javascript - Fatal编程技术网

Javascript 每次循环时按id获取元素

Javascript 每次循环时按id获取元素,javascript,Javascript,所以我的问题是,每当我运行这个循环时,它只会在第一次翻转时获取对元素的更改。有没有办法让它每次都做出这些改变 <script> for ( i=0; i<5; i++){ document.write('<div id=\"blah\" >text</div>'); var b = document.getElementById("blah"); b.style.width ="200px"; b.style

所以我的问题是,每当我运行这个循环时,它只会在第一次翻转时获取对元素的更改。有没有办法让它每次都做出这些改变

<script>
for ( i=0; i<5; i++){
    document.write('<div id=\"blah\" >text</div>');
    var b = document.getElementById("blah"); 
    b.style.width ="200px";      
    b.style.backgroundColor="yellow";
}
</script>


for(i=0;i
id
在文档中必须是唯一的。因此问题就出现了。即使存在多个匹配项,DOM也只会返回1个节点

您可以这样做:

for (var i=0; i<5; i++){
    var div = '<div class="blah" >text</div>';
    div.style.width ="200px";
    div.style.backgroundColor="yellow";
    document.write(div);
}

for(var i=0;i
id
在文档中必须是唯一的。因此存在问题。即使存在多个匹配项,DOM也只会返回1个节点

您可以这样做:

for (var i=0; i<5; i++){
    var div = '<div class="blah" >text</div>';
    div.style.width ="200px";
    div.style.backgroundColor="yellow";
    document.write(div);
}

for(var i=0;i我有两个想法来克服这个问题。第一个是创建元素,更改其样式,并附加它

<script type="text/javascript">
    for (var i = 0; i < 5; i++) {
        var div = document.createElement("div");
        div.style.width = "200px";
        div.style.backgroundColor = "yellow";
        document.appendChild(div);
    }
</script>

对于(变量i=0;i<5;i++){
var div=document.createElement(“div”);
div.style.width=“200px”;
div.style.backgroundColor=“黄色”;
文件.附件(分部);
}
另一个想法是,您不需要对DOM元素的引用,因为您只是在更改样式,所以可以使用CSS应用样式。例如:

<style type="text/css">
    div.something {
        width: 200px;
        background-color: yellow;
    }
</style>

<script type="text/javascript">
    for (var i = 0; i < 5; i++) {
        document.write("<div class='something'>text</div>");
        // Or use the createElement/appendChild approach from above,
        //  where you'd need to set the div.className property as "something"
    }
</script>

什么{
宽度:200px;
背景颜色:黄色;
}
对于(变量i=0;i<5;i++){
文件。书写(“文本”);
//或者从上面使用createElement/appendChild方法,
//需要将div.className属性设置为“something”
}

我有两个想法来解决这个问题。第一个是创建元素,更改其样式,然后附加它

<script type="text/javascript">
    for (var i = 0; i < 5; i++) {
        var div = document.createElement("div");
        div.style.width = "200px";
        div.style.backgroundColor = "yellow";
        document.appendChild(div);
    }
</script>

对于(变量i=0;i<5;i++){
var div=document.createElement(“div”);
div.style.width=“200px”;
div.style.backgroundColor=“黄色”;
文件.附件(分部);
}
另一个想法是,您不需要对DOM元素的引用,因为您只是在更改样式,所以可以使用CSS应用样式。例如:

<style type="text/css">
    div.something {
        width: 200px;
        background-color: yellow;
    }
</style>

<script type="text/javascript">
    for (var i = 0; i < 5; i++) {
        document.write("<div class='something'>text</div>");
        // Or use the createElement/appendChild approach from above,
        //  where you'd need to set the div.className property as "something"
    }
</script>

什么{
宽度:200px;
背景颜色:黄色;
}
对于(变量i=0;i<5;i++){
文件。书写(“文本”);
//或者从上面使用createElement/appendChild方法,
//需要将div.className属性设置为“something”
}

您需要将元素添加到DOM中,以便以后能够访问它

for(var i=0;i<5;i++)
{
  //I'm not sure if you are just trying to make these changes each iteration
  //or create a new element each time. If you are trying to create a new element
  //each time. I'd def consider going a diff route i.e. use classes.
  var b;
  if( i==0 ){
    b = document.createElement("DIV"); 
    b.id = "blah";}
  else{
    b = document.getElementById("blah");}

  b.style.width ="200px";      
  b.style.backgroundColor="yellow";
}

for(var i=0;i您需要将元素添加到DOM中,以便以后能够访问它

for(var i=0;i<5;i++)
{
  //I'm not sure if you are just trying to make these changes each iteration
  //or create a new element each time. If you are trying to create a new element
  //each time. I'd def consider going a diff route i.e. use classes.
  var b;
  if( i==0 ){
    b = document.createElement("DIV"); 
    b.id = "blah";}
  else{
    b = document.getElementById("blah");}

  b.style.width ="200px";      
  b.style.backgroundColor="yellow";
}

for(var i=0;这可能会有帮助。此外,您忘记声明
i
。id是唯一的,您应该使用name属性并使用getElementsByName()这可能会有所帮助。此外,您忘记声明
i
。id是唯一的,您应该使用name属性并使用getElementsByName()我试图在每次迭代中进行更改,每次都将这些更改打印出来。这些更改来自不同循环中的一个单独的php变量,但这似乎不是问题所在。主要问题是,我似乎无法根据影响循环中元素的样式来多次更改元素。有更好的方法吗?没有这些解决方案中有一个似乎解决了这个问题。顺便说一句,感谢大家的回答!使用jQuery会让事情变得更简单,但是循环的目的是什么?是有几个元素需要更改,还是每次发生事情时都要更改一个元素?我每次循环都会更改一个元素,但是我ant it可以在每次元素更改时打印出来。使用您提供的代码,此循环将创建一个元素,然后设置一些样式,在以后的迭代中不做任何更改。它只是反复使用相同的值设置这两个CSS属性。期望的效果是什么?基本上我正在使用从数据库中获取多个值,以便在每次迭代时使用新值动态更改唯一元素的宽度值,但由于每次值的数量都是新的,因此我必须使其成为一个循环。理想的效果是根据这些值生成一个图,通过更改每个元素的样式来表示。我正在尝试更改每次迭代都会重复,每次都会将这些更改打印出来。这些更改来自不同循环中的一个单独php变量,但这似乎不是问题所在。主要问题是,我似乎无法基于影响循环中元素的样式来多次更改元素。有没有更好的方法来做到这一点?这些解决方案都没有em来解决这个问题。顺便说一句,感谢大家的回答!使用jQuery会让事情变得更简单,但是循环的目的是什么?是有几个元素需要更改,还是每次发生事情时都要更改一个元素?我每次循环都要更改一个元素,但我希望它打印出元素。使用您提供的代码,这个循环将创建一个元素,然后设置一些样式,在以后的迭代中不做任何更改。它只是用相同的值反复设置这两个CSS属性。期望的效果是什么?基本上我使用的是da中的几个值tabase可以在每次迭代时动态更改唯一元素的宽度值,每次使用新值,但由于每次的值数量都很新,因此我必须将其设置为循环。理想的效果是创建一个图形,通过根据值更改每个元素的样式来表示。