好吧所以我对整个JavaScript事情都是一个新手,但我只是尝试了一些东西,某种是/否测验,我想跳过某些问题和东西
我想出了以下但是整个“继续Q + question_nr”;不像我希望的那样工作。我该怎么做? :)
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;
}
}
Q2:
alert("test2");
//<insert question 2>
break;
Q3:
alert("test3");
//<insert question 3>
break;
<button onclick="q1()">test</button>
P.S。任何帮助我学习JS的好网站都很受欢迎,所以我不必在将来问这个问题(可能真的很愚蠢)
答案 0 :(得分:0)
我不想教你,去代码学院,但如果你至少&#34;不知道&#34;如何实现可以按照你想要的方式工作的东西,我可以告诉你如何做一些在某种程度上工作的方法。听:
您可以声明执行您的问题(让我们称之为&#34;转到目标&#34;)为:
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来保持这种组织。
答案 1 :(得分: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,那么我们在索引中加一,加上true或false,无论答案是否为y。如果是n,则有条件地将索引增加1,如果是y则增加2。然后检查计算的索引是否存在问题。如果是,则触发问题的警报,或者如果不警告没有其他问题并将索引重置为-1。