这个概念是创造一个升降机操作。点击1后,显示屏应显示1,其他楼层也应如此。 我已经完成了代码。
如果我点击2,3,4连续2楼有一个10000ms的延迟,它在setTimeOut中设置,但3& 4正在立即执行。
这是我的JSFIDDLE.
有人可以帮助我在4个楼层获得相同的间隔时间。
var liftArray = [];
var liftCurrentPosition = 1;
$(document).ready(function(){
$("#currentPosHTML").text(liftCurrentPosition);
});
$(".floorbuttons").click(function(){
$(this).attr("disabled", true);
var selectedfloor = parseInt($(this).text());
console.log(selectedfloor);
if(liftArray == 0 || selectedfloor!=liftArray[liftArray.length-1]){
liftArray.push(selectedfloor);
setInterval(function(){
movelift(liftArray[0]);
liftArray.splice(0,1);
},10000);
}
});
function movelift(value){
$("#currentPosHTML").text(value);
liftCurrentPosition = value;
$(".floorbuttons").each(function(){
if($(this).text() == liftCurrentPosition){
$(this).attr("disabled",false);
}
});
};
答案 0 :(得分:0)
使用setTimeout
功能中的movelift
方法。
答案 1 :(得分:0)
使用setInterval
是正确的,但是如果电梯当前不工作,您必须确保只启动它。如果它正在工作,它将每5秒触发一次,当它到达所有楼层时,需要取消间隔。
所以将其添加为一般变量:
var refreshIntervalId;
将点击功能更改为:
$(".floorbuttons").click(function(){
$(this).attr("disabled", true);
var selectedfloor = parseInt($(this).text());
console.log(selectedfloor);
if (liftArray == 0) {
refreshIntervalId = setInterval(function () {
movelift();
}, 10000);
}
if(liftArray == 0 || selectedfloor!=liftArray[liftArray.length-1]){
liftArray.push(selectedfloor);
}
});
最后更改movelift
功能:
function movelift(){
var value = liftArray.shift();
if (!value) {
clearInterval(refreshIntervalId);
return;
}
$("#currentPosHTML").text(value);
liftCurrentPosition = value;
$(".floorbuttons").each(function(){
if($(this).text() == liftCurrentPosition){
$(this).attr("disabled",false);
}
});
};