2017-09-25 86 views
-1

好吧,所以我对整个JavaScript的东西有点新,但我只是想尝试一些
某种是/否的测验thingy,我想跳过某些问题和东西

我想出了以下内容,但整个“继续Q + question_nr;”不像我希望的那样工作。我该如何做到这一点? :)跳到某处根据变量,JavaScript

var question_nr = 1; 
 

 
Q1: 
 
function q1() { 
 
    var a1 = prompt("Wanna skip the next question?", "y/n"); 
 
switch(a1) { 
 
    case "y": 
 
     alert("k"); 
 
     question_nr = question_nr + 2; 
 
     continue Q + question_nr; 
 
     break; 
 
    case "n": 
 
     alert("oki"); 
 
     question_nr = question_nr + 1; 
 
     break; 
 
    default: 
 
     alert("please enter y or n."); 
 
     break; 
 
\t } \t 
 
} 
 

 
Q2: 
 
alert("test2"); 
 
//<insert question 2> 
 
break; 
 

 
Q3: 
 
alert("test3"); 
 
//<insert question 3> 
 
break;
<button onclick="q1()">test</button>

附:任何好的网站,以帮助我学习JS的赞赏,所以我不需要问(这可能真的很愚蠢)的问题,这样的未来

+1

https://www.w3schools.com/js/是一个开始使用javascript的好地方 – treeseal7

+1

它应该如何工作:)这些是一些很好的免费互动学习网站,非常适合学习基础知识(您可以支付学习更先进的东西)。 https://www.codecademy.com/,http://www.khanacademy.org/cs。一旦你掌握了这些基础课程,我会重新看书。 w3schools也不错。 – WizardCoder

+0

@WizardCoder它应该像Q2,Q3,Q4,Q5等基于变量question_nr的值一样。 – DerpWeasel

回答

0

我不想教你,去代码学院,但如果你至少“不知道”如何实现你想要的东西,我可以告诉你如何做一些工作方式,以便在goto的工作方式上起作用。听:

你可以声明你的问题的执行(我们称之为“转到目标”)为:

const QUESTIONS = { 
    Q1: function() { 
    someLogicThere(); 
    }, 
    Q2: function() { 
    someLogicThere(); 
    } 
}; 

而且在一些像这样的方式执行它(如果你不这样做,这将抛出一个错误定义任何所需的问题):

switch(lastPrompt) { 
    case "y": 
     alert("k"); 
     question_nr = question_nr + 2; 
     QUESTIONS["Q" + question_nr](); 
     break; 
    case "n": 
     alert("oki"); 
     question_nr = question_nr + 1; 
     break; 
    default: 
     alert("please enter y or n."); 
     break; 
    } 
} 

但我假设一个错误的代码。您应该将所有内容都包含在IIFE /模块中,并使用更多的html/angular/react来保持这种组织。

0

我知道你还在学习,但你不应该使用标签来做到这一点。以下是实现此目标的更简单方法。

(function() { 
    var questions = [ 
     'How much wood can a wood chuck chuck?', 
     'How many fish in the sea?', 
     'How does this JavaScript work?' 
    ]; 
    var index = -1; 
    window.askQuestion = function() { 
     var answer = prompt("Wanna skip the next question?", "y/n"); 
     if(answer === 'y' || answer === 'n') { 
      index = (index + 1) + (answer === 'y'); 
      if(questions[index]) { 
       alert(questions[index]); 
      } else { 
       alert("No more questions to ask."); 
       index = -1; 
      } 
     } else { 
      alert("please enter y or n."); 
     } 
    }; 
}()); 

有几件事要注意。上面的函数将其代码封装在所谓的自执行匿名函数中。这使得它内部声明的变量在私有范围内。接下来,我们将问题存储在数组中,同时牢记数组索引总是从0开始。这就是为什么当我们声明索引变量时,它始于-1。如果用户给出的答案是y或n,那么无论答案是否为y,我们都会在索引中加上一个加上true或false。这有条件地增加索引1如果n或2如果y。然后检查计算出的索引是否存在问题。如果是,则触发问题警报,或者如果不提示没有更多问题并将索引重置为-1。