javascript - 运行一次 IF 语句

标签 javascript jquery html asp.net conditional-statements

我有一个年龄值,我将其用作输入 IF 语句的条件。 IF 语句将随机值填充到一个字段中(这是一个 child 数学游戏)。填充字段后,用户可以输入他们的答案,然后使用“检查答案”按钮检查它们。一旦“检查答案” block 运行,IF 语句将再次运行(!),这会导致数学问题发生变化 - 会创建新的随机值。

如何防止 IF 语句在页面已经加载后运行;每次单击“检查答案”按钮时都会导致值发生变化?

这是相关的javascript:

$(document).ready(function () {
    var getAge = localStorage.getItem('setAge');

    var userResponse = new Array();
    var answer = new Array();

    if (getAge >= 1 && getAge <= 7) {
        var operator = new Array('+', '-');

        for (var counter = 0; counter <= 2; counter++) {
            var index = Math.round(Math.random());
            var1 = Math.floor((Math.random() * 5) + 1);
            var2 = Math.floor((Math.random() * 10) + 1);

            // these add the values to the mathQuestions.aspx
            $('#a' + counter).text(var1);
            $('#b' + counter).text(operator[index]);
            $('#c' + counter).text(var2);

            answer[counter] = eval(var1 + operator[index] + var2);
        }

    // this stores the users answers in userResponse[]
    for (var counter = 0; counter <= 2; counter++) {
        $('#d' + counter).change(function () {
            for (var counter = 0; counter <= 2; counter++) {
                userResponse[counter] = $('#d' + counter).val();
                // window.alert("userResponse = " + userResponse[counter]);
            }
        });
    }

    // Button3 = 'Check Answers'
    $('#Button3').click(function () {
        for (var counter = 0; counter <= 2; counter++) {
            window.alert('userResponse after checking the answers = ' + userResponse[counter]);

            if (answer[counter] != userResponse[counter]) {
                $('#span' + counter).val(answer[counter]);
            }
        }
    });
 });

我仍在学习所有这些,因此我可能会遇到其他导致我的问题的错误。据我所知,根本问题是由 IF 语句再次运行引起的。此外,如果相关,我使用 Visual Studio Express 2012 for Web 使用一些 ASP 控件(表、按钮、输入等)。

最佳答案

我的猜测是问题不在您发布的代码中,而在您的 HTML 中;根据您发布的代码,确实包含点击事件,但这永远不会导致“随机化”部分再次运行。

会不会是你的 HTML 看起来像:

<form>
<button>Check answers</button>
</form>

<form>
<input type="submit" value="Check answers">
</form>

在 form-attribute 中有一个 buttonsubmit 会在您点击按钮时产生“submit-action”。结果是您首先看到来自点击事件的警报消息。接下来页面重新加载,整个 document.ready() 脚本将再次执行。

一个简单的解决方案可能是:

$('#Button3').click(function (event) {
    event.preventDefault()
    /* ... */
}

这会停止提交表单。

http://api.jquery.com/event.preventdefault/

关于javascript - 运行一次 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30719646/

相关文章:

javascript - 浏览器是否支持不同的 HTML5 模式正则表达式功能?

javascript - 如何用内部 div 滚动临时替换主滚动

javascript - 如何减少多个 if 语句的代码

javascript - 在表单提交时禁用 Jquery UI 按钮

Cef 扩展脚本的 Javascript 全局变量

javascript - 电子邮件验证Javascript+RegEx,但排除某些域

jquery - 多个输入的清算值(value)?

javascript - 在代码隐藏中使用 javascript 检索设置输入值

javascript - 如何在 Symfony 中使用 Composer 包中的 javascript

javascript - 三.min.js :2 THREE. Object3D.add : object not an instance of THREE. Object3D