基本 Javascript / jQuery 数学游戏:为什么我第二次无法计算 运行 这个函数?

Basic Javascript / jQuery math game: Why can't I evaluate the second time I run this function?

这里是自学成才的新手 JS 程序员。我正在尝试通过制作一个基本的加法游戏来练习我学到的东西。它现在不是非常光滑,但我只是想降低基本功能。

我现在要做的就是在用户正确回答后(不刷新页面)不断生成问题。它仅在第一次 时起作用。

首先,我创建了一个函数来生成我可以计算的随机数并将它们放在页面上。 Click here to see the jsfiddle I made

    // GENERATE AND INSERT NUMBERS

function getRandomInt (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min;
}
function Operation() {
    var self = this;
    var $numberOne = getRandomInt(0,20);
    var $numberTwo = getRandomInt(0,20);
    $numberHolderOne.html($numberOne);
    $numberHolderTwo.html($numberTwo);
    self.quest = $numberOne + $numberTwo;
    self.solution = eval (self.quest);
}
    Operation();

然后我评估,我想提醒用户他们是对的、错的还是没有输入有效字符。如果用户是对的,我想在页面上提出一个新问题。

            //EXECUTE ON CLICK
$goButton.on('click', function(e) {
    e.preventDefault();
    var myAnswer = $('input:text').val();

            if (myAnswer == self.solution)  {
            alert( "You did it!" );
            new Operation();
                }     
            else if (isNaN(myAnswer)) {
            alert("Numbers Only yo!");
        }
            else {
            alert("Try Again Please");
        }
     });

就像我说的那样有效! ...有点。只要您只提交第一个问题的正确答案,它就会生成新问题。为什么?我的意思是,我是 运行 一个新函数,这些变量是在该函数中定义的。有什么我想念的吗?这是范围问题吗?

由于 Operation 的显式初始化而出现问题,这再次给出了第一次尝试的数学运算! Ex. 如果你一开始有 10 + 2,即 12,如果你说 New Operation();它再次给出了完全相同的 12,这与 getRandomInt 生成的数字答案不匹配并且您在文本框中输入了!所以,不需要重新初始化它。

试试下面的 click 函数:

        //EXECUTE ON CLICK
        $goButton.on('click', function(e) {
            e.preventDefault();
            var myAnswer = $('input:text').val();
            alert(eval (self.quest));
                    if (myAnswer == self.solution)  {
                    alert( "You did it!" );

                    Operation();

                }     else if (isNaN(myAnswer)) {
                alert("Numbers Only yo!");
            }       
                else {
                    alert("Try Again Please");
                }   
        });

这里是working Demo

您已经创建了块本地变量 self,请使其可供您为 go 按钮编写的函数访问。

我已经编辑了fiddle,请参考这个Link:js fiddle link