【发布时间】:2016-05-04 06:21:44
【问题描述】:
所以我有一个非常简单的测验,由 7 个选择框和一个提交按钮组成。我想要实现的是,如果没有任何选择框被更改,并且如果它们已被更改以显示分数,则会弹出警告错误。
我设置了一个名为“changed”的变量,它是假的。当其中一个选择框被更改时,“已更改”变为真......
这有效,我有一个控制台日志显示它的工作,但是当按下提交按钮时,它调用函数来显示分数或警告它似乎没有识别出“已更改”已更改为真的。
这是 Jquery...
var changed = false;
$('select').on('change', function () {
var changed = true;
console.log('TRUE');
});
$("#button").click( function(){
var correct = 0;
var selectValue;
var questions = document.getElementsByClassName("question");
var numOfQuestions = questions.length;
for(var i = 0; i < questions.length; i++ ){//begin for loop
//get the value of the select element
selectValue = questions[i].options[questions[i].selectedIndex].value;
//if the value equals right
if(selectValue === "right"){//begin if then
//increment the correct variable
correct++;
}//end if then
}//end for loop
if(changed === false){
$('#scoreDisplay span').append('WARNING');
}
else{
$('#scoreDisplay span').append(correct);
}
});
你可以在这里看到它,但是当你点击提交时你会看到它只是显示“警告”,不管你是否改变了任何选择框...http://gogeye.com/connectquiz/index.html
【问题讨论】:
-
将
var changed = true;更改为changed = true;。你在本地范围内重新声明它。 -
按照@Aeolingamenfel 所说的去做。原因是当你在它前面放一个 var 时,你会创建一个同名的本地版本,而 javascript 默认使用本地版本而不是全局版本。
标签: javascript jquery html