2017-09-22 9 views
0

です。ヌルIDを持たないすべてのコンテナにボタンを追加したい。したがって、コンテンツのリストには2つの項目があり、ボタンを追加したいと思います。問題はリストに最後の項目だけを追加することです。だから私の質問はなぜですか?それを修正する方法。二度同じボタンを追加しようとしたとき複数の要素を1つの要素に追加するループは、複数の要素を追加するのではなく、

例データセット

内容

0:{item_uuid: null, label: "11"} 
1:{item_uuid: "49b661aa-222b-4c3c-a3cc-92db229c500e", label: "24"} 
2:{item_uuid: null, label: "25"} 
3:{item_uuid: null, label: "31"} 
4:{item_uuid: "49b661aa-222b-4c3c-a3cc-92db229c500e", label: "43"} 
5:{item_uuid: null, label: "44"} 

for (var i = 0; i < contents.length; i++) { 
     if (contents[i].item_uuid !== null) { 
      $('#' + contents[i].label).append(button); 
      button.setAttribute("class", "button"); 
     } 
    } 
+0

私にとってうまく動作します。 http://jsbin.com/cemulifuki/edit?html,js,console,output – bassxzero

+0

あなたのコードは正常に動作しています。あなたのページにID 24と43の両方があるかどうかを確認してください。 – Niladri

+0

ちょっと混乱します。おそらくコード内の何かがこの機能を破壊しているのかもしれない。奇妙なやりとりの種類だけど –

答えて

1

あなたのコードが動作するコードが、私はいくつかの奇妙な結果が得られました、それが私がループ内で作成する理由です。同じボタンを複数のコンテナに追加しないようにすることができます。

例えば

for (var i = 0; i < contents.length; i++) { 
     if (contents[i].item_uuid !== null) { 
     var button = $('<button>blah</button>'); 
      $('#' + contents[i].label).append(button); 
      //button.setAttribute("class", "button"); 
     } 
    } 
1

がためのループ内のボタンオブジェクトを作成することができます。それ以外の場合は、同じボタンインスタンスを使用し、最後のインスタンスにのみ追加します。

for (var i = 0; i < contents.length; i++) { 
     if (contents[i].item_uuid !== null) { 
      var button = createElement(....); //create it here 
      $('#' + contents[i].label).append(button); 
      button.setAttribute("class", "button"); 
     } 
    } 
関連する問題