配列にさまざまな文字列があります。 HTMLページの配列要素ごとに<div id="results"></div>
のようなdivを作成することは可能ですか?
フレームワークやライブラリを使用しない、確かで単純な例:
var cars = 'Saab,Volvo,BMW,GMC,Nissan,Ford'.split(',');
for (var c in cars) {
var newElement = document.createElement('div');
newElement.id = cars[c]; newElement.className = "car";
newElement.innerHTML = cars[c];
document.body.appendChild(newElement);
}
ここでjsFiddleを使用してこれがどのように機能するかを見ることができます: http://jsfiddle.net/Shaz/geNNa/
ええ、for
ループを使用します:
_var arrayVariable = ['one','two','three'],
arrayLength = arrayVariable.length;
for (i = 0; i < arrayLength; i++) {
$('<div class="results" />').text(arrayVariable[i]).appendTo('body');
}
_
_<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
_
またはもう少しjQuery-fied:
_var arrayVariable = ['one', 'two', 'three'];
$.each(arrayVariable, function(index, value) {
$('<div />', {
'text': value
}).appendTo('body');
});
_
_<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
_
必要に応じて、VanillaJavaScriptでもこれを行うことができます。
_var arrayVariable = ["one", "two", "three"];
var arrayLength = arrayVariable.length;
var temp;
for (i = 0; i < arrayLength; i++) {
temp = document.createElement('div');
temp.className = 'results';
temp.innerHTML = arrayVariable[i];
document.getElementsByTagName('body')[0].appendChild(temp);
}
_
id
がどこから来ているのかを検討する価値があります。このfor
ループによって複数のone要素が生成される場合、両方の提案で行ったように、代わりにid
を使用する方が(class
が割り当てられる場所と方法によって異なります)、id
ドキュメント内で一意である必要があります。
この回答はかなり前に書かれましたが、(比較的新しい)Array.prototype.forEach()
によって提供される可能性を反映するように更新する価値があると感じました。これは、特定の配列の各要素を反復処理し、それぞれに関数を適用します。反復。たとえば、HTMLが与えられた場合:
_<ul id="fruits"></ul>
_
そしてJavaScript:
_var fruitsList = document.getElementById('fruits'),
li = document.createElement('li'),
clone;
['apples','bananas','cranberries'].forEach(function (fruit, index) {
clone = li.cloneNode();
clone.textContent = index + ': ' + fruit;
fruitsList.appendChild(clone);
});
_
結果は次のようになります。
_<ul id="fruits">
<li>0: apples</li>
<li>1: bananas</li>
<li>2: cranberries</li>
</ul>
_
_var fruitsList = document.getElementById('fruits'),
li = document.createElement('li'),
clone;
['apples', 'bananas', 'cranberries'].forEach(function(fruit, index) {
clone = li.cloneNode();
clone.textContent = index + ': ' + fruit;
fruitsList.appendChild(clone);
});
_
_<ul id="fruits"></ul>
_
参照:
Basic For Loop + jQueryがそれを行う必要があります。 body
を、divを追加するコンテナーのセレクターに置き換えるだけです。 ここにフィドルがあります 使用中のテクニックを示しています。
var myCars=new Array("Saab","Volvo","BMW");
for(var x=0; x<myCars.length; x++){
$('body').append('<div id="' + myCars[x] + '">' + myCars[x] + '</div>');
}
使用できます
_var results = ['result 1', 'result 2', 'result 3'];
$.each(results, function(idx, value){
var newdiv = $('<div>',{class: 'results', text: value});
$('body').append( newdiv );
});
_
使用済み $.each()
ドキュメント 、またidは一意である必要があるため、idをclassに変更しました。