Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从循环内的switch语句接收值_Javascript_Arrays_Oop_For Loop_Switch Statement - Fatal编程技术网

Javascript 无法从循环内的switch语句接收值

Javascript 无法从循环内的switch语句接收值,javascript,arrays,oop,for-loop,switch-statement,Javascript,Arrays,Oop,For Loop,Switch Statement,我遇到了这样一个问题:我创建的循环没有返回值 这个想法很简单——我需要一秒一秒地更新我的火车到达的距离。如果达到滚动的秒数,则表示它正在前往一个站点的途中,或者正好在一个站点中。下面是我的代码 谢谢,希望我不会错过这篇文章 function Train(speed, distance, elapsedTime, eTA, station, condition, type) { this.speed = speed; this.station = station; this.dista

我遇到了这样一个问题:我创建的循环没有返回值

这个想法很简单——我需要一秒一秒地更新我的火车到达的距离。如果达到滚动的秒数,则表示它正在前往一个站点的途中,或者正好在一个站点中。下面是我的代码

谢谢,希望我不会错过这篇文章

function Train(speed, distance, elapsedTime, eTA, station, condition, type) {
  this.speed = speed;
  this.station = station;
  this.distance = distance;
  this.elapsedTime = elapsedTime;
  this.eTA = eTA;
  this.condition = condition;
  this.type = this.speed == 30 ? 'Regio' : this.speed == 70 ? 'Inter-Regio' : 'Broken'; 
}

var trainOne = new Train(30, '', '', '', '', '', '');
var elapsedTime = 
  function theLoop (elapsedTime) {
    setTimeout (function(){
    switch(elapsedTime){
      case elapsedTime == 0:
        Train().station = 'Station A';
        Train().eTA = 28 - elapsedTime + 'seconds left untill reaching the next station';
        break;

      case elapsedTime < 28:
        Train().station = 'Train left station A';
        Train().eTA = 28 - elapsedTime + 'seconds left untill reaching the next station';
        break;

      case elapsedTime == 28:
        Train().station = 'Station 2';
        Train().eTA = 28 - elapsedTime + 'seconds left untill reaching the next station';
        break;

      case elapsedTime > 28 && elapsedTime < 70:
        Train().station = 'Train left station 2';
        Train().eTA = 70 - elapsedTime + 'seconds left untill reaching the next station';
        break;

      case elapsedTime == 70:
        Train().station = 'Station 3';
        Train().eTA = 84 - elapsedTime + 'seconds left untill reaching the next station';
        break;

      default :
        Train().station = 'Station A';
        Train().eTA = 'No information available yet';
    }
    console.log(trainOne);
    if (++elapsedTime && elapsedTime < 12) {
      theLoop(elapsedTime);
    }
  }, 1000);
} (0);
功能列车(速度、距离、延迟时间、eTA、车站、条件、类型){
速度=速度;
这个站=站;
这个距离=距离;
this.elapsedTime=elapsedTime;
这.eTA=eTA;
这个条件=条件;
this.type=this.speed==30?'Regio':this.speed==70?'Inter Regio':'breaked';
}
var列车一号=新列车(30,,,,,,,,,,,,);
变量elapsedTime=
函数循环(elapsedTime){
setTimeout(函数(){
开关(延时){
案例elapsedTime==0:
火车站=‘A站’;
列车().eTA=28-预计到达时间+“距离到达下一站还有几秒”;
打破
案例持续时间<28:
列车().车站='列车离开A站';
列车().eTA=28-预计到达时间+“距离到达下一站还有几秒”;
打破
案例elapsedTime==28:
列车()。车站=‘车站2’;
列车().eTA=28-预计到达时间+“距离到达下一站还有几秒”;
打破
案例elapsedTime>28&&elapsedTime<70:
列车().车站='列车离开车站2';
列车().eTA=70-预计到达时间+“距离到达下一站还有几秒”;
打破
案例elapsedTime==70:
火车站=‘3号站’;
列车().eTA=84-预计到达时间+‘到达下一站前还剩几秒’;
打破
违约:
火车站=‘A站’;
列车().eTA='还没有可用信息';
}
控制台日志(列车一);
如果(++elapsedTime&&elapsedTime<12){
环路(延时);
}
}, 1000);
} (0);
试试这个

功能列车(速度、距离、延迟时间、eTA、车站、条件、类型){
速度=速度;
这个站=站;
这个距离=距离;
this.elapsedTime=elapsedTime;
这.eTA=eTA;
这个条件=条件;
this.type=this.speed==30?'Regio':this.speed==70?'Inter Regio':'breaked';
}
var列车一号=新列车(30,0,,,,,,,,,,,);
函数循环(elapsedTime){
setTimeout(函数(){
trainOne.distance+=trainOne.speed*elapsedTime;
如果(elapsedTime==0){
trainOne.station=‘车站A’;
trainOne.eTA=28-延迟时间+“到达下一站前的剩余秒数”;
}否则如果(elapsedTime<28){
trainOne.station=‘列车离开A站’;
trainOne.eTA=28-延迟时间+“到达下一站前的剩余秒数”;
}else if(elapsedTime==28){
列车1.station=‘车站2’;
trainOne.eTA=28-延迟时间+“到达下一站前的剩余秒数”;
}否则如果(elapsedTime>28&&elapsedTime<70){
trainOne.station=‘列车离开车站2’;
trainOne.eTA=70-延迟时间+“到达下一站前的剩余秒数”;
}否则如果(elapsedTime==70){
列车1.station=‘车站3’;
trainOne.eTA=84-延迟时间+“到达下一站前的剩余秒数”;
}
console.log(elapsedTime);
控制台日志(一号列车站);
如果(elapsedTime<100){
循环(++延迟时间);
}
}, 1000);
};
环路(0)请尝试另一个:

功能列车(速度、距离、延迟时间、eTA、车站、条件、类型){
速度=速度;
这个站=站;
这个距离=距离;
this.elapsedTime=elapsedTime;
这.eTA=eTA;
这个条件=条件;
this.type=this.speed==30?'Regio':this.speed==70?'Inter Regio':'breaked';
设timerID=null;
this.run=函数(){
timerID=setInterval((自身)=>{
self.elapsedTime++;
自我距离+=速度;
log(`${self.elapsedTime}秒,距离:${self.distance}`);
},1000,这个);
}
this.stop=函数(){
控制台日志(“停止”);
清除间隔(timerID);
}
this.pause=函数(){
清除间隔(timerID);
}
this.station=功能(名称、持续时间){
log(`Station${name}`);
这个。暂停();
设置超时((自身)=>{
log(`livestation${name}`);
self.run();
},持续时间,此,名称);
}
}
var列车一号=新列车(30,0,,,,,,,,,,,);
trainOne.run();
设置超时(()=>{
一号列车车站(“A”,5000);
}, 5000);
设置超时(()=>{
第一列火车站(“B”,5000);
}, 15000);
设置超时(()=>{
第一列火车停下来;

}, 30000);问题是什么?还有,这里是否需要
开关
?如果还有
呢?即使解决了这个问题,我也可以再补充一个问题。如何暂停案例执行5秒(针对列车到达车站的案例)。setTimeout似乎对我不起作用。@vivek_23既然我有可能在A站乘坐火车,为什么我要选择if-else(关键是,当我可以使用开关节省一些时间和内存时,为什么要让整个if-else-if-else运行)?很好!我希望我能完全理解代码,而不需要谷歌搜索,但我会搜索那些语句。非常感谢。