2017-09-25 46 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。