Javascript 如何将函数放入for循环并等待用户输入
我试图做一个简单的测验,其中两个术语以不同的语言显示(我在这里使用了数字以避免混淆)。50%的时间条款将匹配。用户可以选择是否匹配术语。问题以随机顺序显示,重复也无所谓 我们的想法是,这应该重复多次 我似乎无法让循环工作,目前它运行并在开始时打印出所有问题。我想它打印出一个新的问题时,用户点击 以下是指向JSFIDLE的链接: 代码如下:Javascript 如何将函数放入for循环并等待用户输入,javascript,jquery,Javascript,Jquery,我试图做一个简单的测验,其中两个术语以不同的语言显示(我在这里使用了数字以避免混淆)。50%的时间条款将匹配。用户可以选择是否匹配术语。问题以随机顺序显示,重复也无所谓 我们的想法是,这应该重复多次 我似乎无法让循环工作,目前它运行并在开始时打印出所有问题。我想它打印出一个新的问题时,用户点击 以下是指向JSFIDLE的链接: 代码如下: $(document).ready(function () { var score = 0; var hiraganaWords1 = [ ["1"
$(document).ready(function () {
var score = 0;
var hiraganaWords1 = [
["1", "one"],
["2", "two"],
["3", "three"],
["4", "four"],
["5", "five"],
["6", "six"],
["7", "seven"],
["8", "eight"],
["9", "nine"],
["10", "ten"]
];
function askQuestion() {
var questionNumber = Math.floor((Math.random() * hiraganaWords1.length));
var trueFalse = Math.round(Math.random());
var wrongAnswer = Math.floor((Math.random() * hiraganaWords1.length));
var correct = hiraganaWords1[questionNumber][0];
var trueAnswer = hiraganaWords1[questionNumber][1];
var incorrectAnswer = hiraganaWords1[wrongAnswer][1];
if (trueFalse === 0) {
$("#japanese").append(correct);
$("#english").append(trueAnswer);
var answer = "yes";
$("#yes").click(function () {
var guess = "yes";
if (guess === answer) {
score++;
alert("well done your score is: " + score);
} else {
score = 0;
alert("try again");
}
});
$("#no").click(function () {
var guess = "no";
if (guess == answer) {
score++;
alert("well done your score is: " + score);
$("#japanese").html(" ");
$("#english").html(" ");
} else {
score = 0;
alert("try again" );
}
})
} else {
$("#japanese").append(correct);
$("#english").append(incorrectAnswer);
var answer = "no";
$("#yes").click(function () {
var guess = "yes";
if (guess == answer) {
score++;
alert("well done" + score);
} else {
score = 0;
alert("try again" + score);
}
});
$("#no").click(function () {
var guess = "no"
if (guess == answer) {
score++;
alert("well done" + score);
} else {
score = 0;
alert("try again" + score);
}
})
}
}
for(i=0;i<5;i++){
askQuestion();
}
});
$(文档).ready(函数(){
var得分=0;
var hiraganaWords1=[
[“1”,“1”],
[“2”,“2”],
[“3”,“3”],
[“4”,“4”],
[“5”、“5”],
[“6”、“6”],
[“7”、“7”],
[“8”,“8”],
[“9”、“9”],
[“10”,“10”]
];
函数askQuestion(){
var questionNumber=Math.floor((Math.random()*平假名1.length));
var trueFalse=Math.round(Math.random());
var errowresponse=Math.floor((Math.random()*hiraganaWords1.length));
var correct=hiraganaWords1[问题编号][0];
var trueAnswer=hiraganaWords1[问题编号][1];
var incorrectAnswer=hiraganaWords1[错误答案][1];
如果(trueFalse==0){
$(“#日语”)。追加(正确);
$(“#英语”)。附加(trueAnswer);
var answer=“是”;
$(“#是”)。单击(函数(){
var guess=“是”;
如果(猜测==答案){
分数++;
警惕(“做得好,你的分数是:“+分数”);
}否则{
得分=0;
警惕(“重试”);
}
});
$(“#否”)。单击(函数(){
var guess=“否”;
如果(猜测=答案){
分数++;
警惕(“做得好,你的分数是:“+分数”);
$(“#日语”).html(“”);
$(“#英语”).html(“”);
}否则{
得分=0;
警惕(“重试”);
}
})
}否则{
$(“#日语”)。追加(正确);
$(“#英语”)。附加(不正确答案);
var answer=“否”;
$(“#是”)。单击(函数(){
var guess=“是”;
如果(猜测=答案){
分数++;
警惕(“做得好”+得分);
}否则{
得分=0;
警惕(“重试”+得分);
}
});
$(“#否”)。单击(函数(){
var guess=“否”
如果(猜测=答案){
分数++;
警惕(“做得好”+得分);
}否则{
得分=0;
警惕(“重试”+得分);
}
})
}
}
对于(i=0;i您不能在JavaScript中等待(如果可以,浏览器将阻止并单击任何位置都不会产生任何效果)
因此,解决方法是在用户单击其选择时(在显示最后一个问题的结果后)询问下一个问题。从代码中很难理解。但我可以给出一个大致的想法
实现一个名为askQuestion
的函数,如:
// add more questions
var questions = ["Eaten food?", "Exercised?"];
// add more choices of your own
var choices = [
["one", "four", "three", "two"],
["onasde", "foadur", "thradasdee", "two00"], ];
$(document).ready(function () {
askQuestion(0);
});
function askQuestion (index){
// where index is the index of question in questions array and choices in choices array
// display question and choices
$("#q").html(questions[index]);
$("#c").html(choices[index].toString());
//And then,
$("inout").keyup(function(){
validateUserInput(); // validate user input
// ask question passing another index
askQuestion(index + 1);
});
}
你看。在
输入
更改
上,启动一个匿名函数,验证用户输入
并询问
另一个问题
希望这会有所帮助!看起来您试图用错误的方法解决数据绑定问题。我建议您关注或寻求问题的解决方案(构建动态用户响应javascript界面)。这可能会为您节省一些时间。IMHO,循环是错误的做法。使用变量跟踪您正在处理的问题,并在用户选择答案后进行处理。此外,每次调用askQuestion
时,您都会将另一个事件处理程序附加到这些元素中的每一个。它们都会执行,因此在问题5中,您将您将在#yes
上执行5次单击处理程序。此外,您还需要进一步考虑您的逻辑。您没有什么可以阻止它重复问同一个问题,并且您似乎没有任何东西可以检查“错误”答案是否与“正确”答案相同回答。谢谢你的意见。是的,我现在知道循环是一种错误的方式。我工作有点忙,但我想我已经几乎破解了它,到时候我会再次发布。