私は絶望的なJavaScriptの初心者であり、動的に作成された画像要素をDOMに挿入し、それらをランダムに配置および回転させようとしています。
現在、私は基本的にこれを行っています:
- すべての画像ファイルパスを含む配列を作成します
- 動的に作成された名前でdivを作成し、DOMに挿入します
- 画像の20の異なるインスタンスを生成し、対応するdivにDOMに挿入します
- 各画像をランダムな量だけ回転させ、各画像をランダムに配置します。ローテーションには、jQueryrotateプラグインを使用します。
私は最初に要素をDOMに挿入し、次にそれらの位置と回転を操作しているので、これらすべてを非常に愚かな方法で行っていると感じています。
最初に仮想メモリですべてを実行し、最後にすべての操作が完了したときに要素をDOMに挿入する方法はありますか?
これが私の現在のコードです(noobish品質で申し訳ありません):
$(document).ready(function(){
var wrapper = $('#wrapper'),
function movieCreator(movieName, generateAmount){
var contents=new Array (
'<img class="film '+movieName+'" src="images/'+movieName+'01.png" alt="'+movieName+'" />',
'<img class="film '+movieName+'" src="images/'+movieName+'02.png" alt="'+movieName+'" />',
'<img class="film '+movieName+'" src="images/'+movieName+'03.png" alt="'+movieName+'" />',
'<img class="film '+movieName+'" src="images/'+movieName+'04.png" alt="'+movieName+'" />',
'<img class="film '+movieName+'" src="images/'+movieName+'05.png" alt="'+movieName+'" />',
'<img class="film '+movieName+'" src="images/'+movieName+'06.png" alt="'+movieName+'" />',
'<img class="film '+movieName+'" src="images/'+movieName+'07.png" alt="'+movieName+'" />'
);
var tmp='';
var dynamicIdName = 'box'+movieName;
var dynamicIdCall = '#box'+movieName;
wrapper.append("<div id='"+dynamicIdName+"' class='moviebox'></div>");
var random
for (i=0; i < generateAmount;){
random = Math.floor(Math.random()*contents.length);
tmp += contents[random];
i++
};
$(dynamicIdCall).append(tmp);
$(".film").each(function(){
randomrot = Math.floor(Math.random()*360);
randomposX = Math.floor(Math.random()*200);
randomposY = Math.floor(Math.random()*200);
$(this).rotate(randomrot);
$(this).css({'top': randomposY -40});
$(this).css({'left': randomposX -40});
});
wrapper.on('click','.film',function(){
imageControl(this);
});
} //end movieCreator
movieCreator('terminator', 20);
movieCreator('rambo', 20);
movieCreator('godfather', 20);
movieCreator('matrix', 20);
movieCreator('kingkong', 20);
}); //dom ready