2016-04-07 9 views
-3

Ich habe den folgenden JS-Code, in dem ich versuche, diese Elemente an das DOM anzuhängen. Ich habe es getan, aber ich versuche herauszufinden, wie man eine Schleife verwendet, um diese anzuhängen, um den DRY-Prinzipien zu folgen. Ich kann nur Vanille JS verwenden.Verwenden einer Schleife, um die DOM-Manipulation zu vereinfachen Vanilla JS

var divOne = document.getElementById('buttonHolder'); 
 

 
var btnGroupOne = document.createElement('div') 
 
btnGroupOne.className = 'btn-group'; 
 
divOne.appendChild(btnGroupOne); 
 

 
var btnOne = document.createElement('button'); 
 
var textOne = document.createTextNode('1'); 
 
btnOne.appendChild(textOne); 
 
btnOne.className = 'btn btn-default'; 
 
btnGroupOne.appendChild(btnOne); 
 

 
var btnTwo = document.createElement('button'); 
 
var textTwo = document.createTextNode('2'); 
 
btnTwo.appendChild(textTwo); 
 
btnTwo.className = 'btn btn-default'; 
 
btnGroupOne.appendChild(btnTwo); 
 

 
var btnThree = document.createElement('button'); 
 
var textThree = document.createTextNode('3'); 
 
btnThree.appendChild(textThree); 
 
btnThree.className = 'btn btn-default'; 
 
btnGroupOne.appendChild(btnThree); 
 

 
var btnFour = document.createElement('button'); 
 
var textFour = document.createTextNode('4'); 
 
btnFour.appendChild(textFour); 
 
btnFour.className = 'btn btn-default'; 
 
btnGroupOne.appendChild(btnFour);
<div id="buttonHolder"></div>

+2

Could Sie zeigen, was Sie versucht haben zu programmieren, um wiederholten Code zu vermeiden und erklären, was nicht funktioniert hat? –

+0

Wie wäre es mit 'for-loop'? – Rayon

+0

Sie brauchen nicht wirklich eine Schleife. Erstellen Sie eine Funktion mit dem Namen createDefaultBtn, die den Code verwendet, der einen Textknotenwert akzeptiert, und gibt ein neues Standardschaltflächenelement zurück, das Sie dem übergeordneten Element hinzufügen können. – Andy

Antwort

1

Versuchen zu abstrahieren, so viel Code wie möglich, Andy ist rechts eine Funktion für diese Art von Aufgabe am besten ist:

function buttonMaker(textnode) { 
 
    var btnOne = document.createElement('button'); 
 
    var textOne = document.createTextNode(textnode); 
 
    btnOne.appendChild(textOne); 
 
    btnOne.className = 'btn btn-default'; 
 
    return btnOne; 
 
} 
 

 
var numberOfButtons = 4; 
 

 
var btnHolder = document.createElement('div'); 
 

 
// in a loop you can then do this: 
 
for (var i = 1; i <= numberOfButtons; i++) { 
 
    btnHolder.appendChild(buttonMaker(i)); 
 
} 
 

 
document.getElementById('btnBox').appendChild(btnHolder);
<div id="btnBox"></div>

+1

Ich würde empfehlen, einen docfrag zu verwenden, sonst werden Sie das DOM jedes Mal schlagen, wenn Sie eine neue Schaltfläche anhängen. – Andy

+0

Verzeihen Sie meine Bearbeitung. Ich mag es nicht, dass OP SO dazu auffordert, seine Hausaufgaben zu machen, aber wenn jemand später auf diese Antwort kommt, möchte ich, dass der Code für sie aus der Box funktioniert. –

+0

keine Sorgen, es ist geschätzt – JordanHendrix