【发布时间】:2015-08-23 12:56:42
【问题描述】:
我有一个年龄值,我将其用作输入 IF 语句的条件。 IF 语句将随机值填充到字段中(这是一个儿童数学游戏)。填充字段后,用户可以输入他们的答案,然后使用“检查答案”按钮进行检查。一旦运行“检查答案”块,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 控件(表格、按钮、输入等)。
【问题讨论】:
-
它应该只在页面加载完成时运行一次,然后不再运行。如果你真的想要,你可以设置一个哨兵变量,例如
var already_ran = false;,然后在 if() 完成后将其设置为 true。
标签: javascript jquery html asp.net conditional-statements