2016-04-07 4 views
-3

私はこれらの要素をDOMに追加しようとしている次のJSコードを持っています。私はそうしましたが、DRYの原則に従うためにループを使用してこれらを追加する方法を理解しようとしています。私はバニラJSだけを使うことができます。ループを使用してDOM操作を簡略化するバニラ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

でしたあなたは繰り返しコードを避けるためにコードしようとしたものを示し、何がうまくいかなかったのか説明します。 –

+0

'for-loop'はどうですか? – Rayon

+0

本当にループは必要ありません。テキストノード値を受け付けるコードを使って 'createDefaultBtn'という関数を作成し、親要素に追加することができる新しいデフォルトのボタン要素を返します。 – Andy

答えて

1

することができますように離れて抽象限り多くのコードを試してみてください、アンディは、関数は、タスクのこの種のために最善である権利である:

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

私はdocfragを使用することをお勧めします。そうしないと、新しいボタンを追加するたびにDOMを押すことになります。 – Andy

+0

私の編集を許してください。私はOPが彼に宿題をするよう頼んでいるのが好きではありませんが、後で他の人がこの答えに出くわしたら、コードを箱から出して作業したいと思います。 –

+0

心配することはありません。 – JordanHendrix

関連する問題