2017-12-06 13 views
0

Ich erstelle ein dynamisches Formular mit vielen verschiedenen divs innerhalb. Jedes Div hat seine eigene eindeutige Eingabekombination. Ich habe gelesen, dass appendChild schneller ist als die innere HTML ändern, so dass meine Lösung ist, die Anzahl der Arrays zu bauen. Jedes Array ist ein Div in der Form und in jedem Array sind mehrere Objekte definiert. Jedes Objekt ist eine Eingabe.Anfügen der Eigenschaften eines Objekts oder eines Arrays an die Eigenschaften eines Knotens

zB:

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

Zuerst habe ich eine foreach-Anweisung verwenden die Objekteigenschaft auf ein neues Element zu befestigen mit setAttribute wie folgt: (während einer ‚Tag‘ Eigenschaft als HTML-Tag und als Löschen, damit es nicht als Attribut angezeigt wird).

Das Problem ist, ich habe mehr Dinge, die ich dem Element hinzufügen möchte, die nicht durch Attribute hinzugefügt werden können. Wie: innerer Text. Also könnte ich vielleicht das Array zu einem Array von Eigenschaften machen, die ich in den 'temp'-Knoten einbinden kann?

Vielen Dank im Voraus!

Antwort

0

könnten Sie behandeln nur, dass in einem anderen Abschnitt kurz vor dem for-Schleife wie diese

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

ist Ihr Vorschlag für mich nicht funktioniert .. – user3289991

Verwandte Themen