Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 如何将函数放入for循环并等待用户输入_Javascript_Jquery - Fatal编程技术网

Javascript 如何将函数放入for循环并等待用户输入

Javascript 如何将函数放入for循环并等待用户输入,javascript,jquery,Javascript,Jquery,我试图做一个简单的测验,其中两个术语以不同的语言显示(我在这里使用了数字以避免混淆)。50%的时间条款将匹配。用户可以选择是否匹配术语。问题以随机顺序显示,重复也无所谓 我们的想法是,这应该重复多次 我似乎无法让循环工作,目前它运行并在开始时打印出所有问题。我想它打印出一个新的问题时,用户点击 以下是指向JSFIDLE的链接: 代码如下: $(document).ready(function () { var score = 0; var hiraganaWords1 = [ ["1"

我试图做一个简单的测验,其中两个术语以不同的语言显示(我在这里使用了数字以避免混淆)。50%的时间条款将匹配。用户可以选择是否匹配术语。问题以随机顺序显示,重复也无所谓

我们的想法是,这应该重复多次

我似乎无法让循环工作,目前它运行并在开始时打印出所有问题。我想它打印出一个新的问题时,用户点击

以下是指向JSFIDLE的链接:

代码如下:

$(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次单击处理程序。此外,您还需要进一步考虑您的逻辑。您没有什么可以阻止它重复问同一个问题,并且您似乎没有任何东西可以检查“错误”答案是否与“正确”答案相同回答。谢谢你的意见。是的,我现在知道循环是一种错误的方式。我工作有点忙,但我想我已经几乎破解了它,到时候我会再次发布。