2017-12-06 1 views
0

多くの異なるdivを内部に持つ動的フォームを作成しています。各divには独自の入力コンビネーションがあります。私はappendChildがinnerHTMLを変更するよりも速いことを読んだので、私の解決策は配列の数を構築することです。各配列はフォーム内のdivであり、各配列にはいくつかのオブジェクトが定義されています。各オブジェクトは入力です。オブジェクトのプロパティまたは配列をノードのプロパティにアタッチする

例:まず

 var div = [ 
      label = { 
       tag: "label", 
       text: "Enter password", 
       for: "pass" 
      }, 
       input = { 
       tag: "input", 
       type: "password", 
       name: "pass" 
      } 
     ]; 

、私はそうのような setAttributeメソッドを使用して新しい要素上にオブジェクトのプロパティを添付するforeach文を使用:(HTMLタグなどの「タグ」プロパティを使用しているときと比べて削除すると属性として表示されません)。

for(var elem in div) { 
    var temp = document.createElement(div[elem].tag); 
    delete div[elem].tag; 
    for(var prop in div[elem]) { 
     temp.setAttribute(prop,input[prop]); 
    } 
    parentDiv.appendChild(temp); 
} 

問題は、属性に追加できない要素に追加したいことがたくさんあることです。次のように:innerText。だから、私は 'temp'ノードにマージできるプロパティの配列を配列にすることができますか?

ありがとうございます!

答えて

0

あなたはちょうどこの

for(var elem in div) { 
    var temp = document.createElement(div[elem].tag); 
    delete div[elem].tag; 

    // add the other properties 
    ["innerHtml", "innerText"].forEach(function (attr) { 
    if(div[ele][attr]) { 
     temp[attr] = div[ele][attr] 
     delete div[ele][attr]; 
    }); 

    // add the attributes 
    for(var prop in div[elem]) { 
    temp.setAttribute(prop.input[prop]); 
    } 
    parentDiv.appendChild(temp); 
} 
+0

のようなループのためにあなたの提案が私のために働いていない前に、別のセクションでそれを扱うことができます。.. – user3289991

関連する問題