0

したがって、私の問題は、このループを実行するたびに、最初のフリップスルーで要素への変更のみを取得することです。毎回これらの変更を行う方法はありますか?

<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>
4

3 に答える 3

2

これを克服するために2つのアイデアがあります。1 つ目は、要素を作成し、そのスタイルを変更して追加することです。

<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>

もう 1 つのアイデアは、スタイルを変更するだけなので、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>
于 2013-06-05T21:06:28.133 に答える
0

後でアクセスできるようにするには、要素を 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";
}
于 2013-06-05T21:08:45.933 に答える