我試圖調用一個HTML5-Canvas動畫並在類.object
的每個項目中重複它。但JavaScript只適用於最後一項!each()只在最後一個對象上工作(使用foreach循環)
<ul>
<li><canvas class="object"></canvas></li>
<li><canvas class="object"></canvas></li>
<li><canvas class="object"></canvas></li>
<li><canvas class="object"></canvas></li> //this one shows
</ul>
$('.object').each(function(){
var $class = $(this).attr('class').split(' ').pop();
var $library = new lib.Animation();
myAnimation($class, $library);
});
function myAnimation($class, $library) {
var $canvas = document.getElementsByClassName($class);
for (i = 0; i < $canvas.length; i++) {
var $canvas_root = $library;
var $canvas_stage = new createjs.Stage($canvas[i]);
$canvas_stage.addChild($canvas_root);
$canvas_stage.update();
createjs.Ticker.setFPS(24);
createjs.Ticker.addEventListener("tick", $canvas_stage);
}
}
我得到它的工作使用ID,但是我寧願得到它的工作爲每個項目有一個類:
<ul>
<li><canvas id="object1" class="object"></canvas></li>
<li><canvas id="object2" class="object"></canvas></li>
<li><canvas id="object3" class="object"></canvas></li>
<li><canvas id="object4" class="object"></canvas></li> //this one shows
</ul>
$('.object').each(function() {
var $id = $(this).attr('id');
var $library = new lib.orbeOther();
myAnimation($id, $library);
});
function myAnimation($id, $library) {
var $canvas = document.getElementById($id);
var $canvas_stage = new createjs.Stage($canvas);
$canvas_stage.addChild($library);
$canvas_stage.update();
createjs.Ticker.setFPS(24);
createjs.Ticker.addEventListener("tick", $canvas_stage);
}
});
你可以改變這一行'$( '對象 ')每個(函數(){'本'$(' 對象') .each(函數(idx,obj){''id'是循環id(從零開始),obj'是數組當前循環中實際的'canvas'對象...讓我知道如果這就是你想要的 – ochi
我在函數內寫什麼? –
@ochi在這個例子中,'idx'是匹配集內元素的索引,與元素的'id'屬性無關 –