我有一个简单的循环来增加或减少floorNumber
,并在进行时为底层分配楼层号。一个警告是关闭CSS3转换,因此用户可以看到发生转换。我想逐渐改变DOM的变化。 (很高兴使用setTimeout
)
不明白为什么闭包会导致某些变量错误(currentFloor
不会data.destination
),或者为什么循环被调用太多次。任何建议表示赞赏!
http://codepen.io/nm6833240/pen/QwwzRK
var doQueue = function() {
do {
var data = floorQueue.shift();
var dir = data.destination > currentFloor ? 1 : -1;
var dis = (data.destination - currentFloor) * dir;
for (;dis > 0; --dis) {
var efx = transitionEvent();
$floorNumber[0].addEventListener(efx, function() {
$floorNumber.removeClass('active');
if(dir === 1) ++currentFloor;
else if(dir === -1) --currentFloor;
doLights(dir);
doButtons();
if (privateAllowedStop(dis) || data.destination === currentFloor) {
doDoors();
}
});
$floorNumber.removeClass('active');
}
}
while (floorQueue.length > 0);