我正在创建一个带有数据流的jQuery脚本,其中一个窗口变量用于确定脚本应该继续的路径。预期的路径是这样的:
window.QuestionSelector
设置为0,-1或数字window.QuestionSelector
的值为0表示全新的父测验,-1表示新问题,数字表示现有问题被引用。这是调用问题函数的代码
$(".questionJumpLink").click(function () {
//questionJumpLink will have a data-attribute attached if you're selecting a different question
if ($(this).attr('data-questionid')) {
window.QuestionSelector = $(this).attr('data-questionid');
console.log("Question ID " + window.QuestionSelector + " requested");
}
if (window.QuestionSelector == -1) {
console.log("New question request detected");
}
questionFunction();
}
尽管window.QuestionSelector的值为-1,但仍触发此if语句questionFunction()
的一部分。
//Used when navigating between questions, not on initial load. QuestionSelector
//is the QuestionID being requested. -1 can be set for a new question indicator
if (window.QuestionSelector != 0 && window.QuestionSelector != -1)
{
console.log("Question switch, same quiz path switch");
//Some code and handling, not vital
}
这个if语句直接位于questionFunction()
中上面代码块的正下方,是我期望触发的那个:
if (window.QuestionSelector != 0 && window.QuestionSelector === -1) {
console.log("New question path");
$("#quizQuestion").unbind();
$("#quizQuestion").focusout(function () {
questionField();
console.log("Build Answers called");
buildAnswers();
$("input[name^=AnswerOrder]").unbind();
enableAnswerOrderSave();
$("[name^=AnswerID]").unbind();
autoCheckboxOnChange();
$("input[id^=IsValidAnswer]").unbind();
AnswerAcDeac();
$("input[name^=IsCorrectAnswer]").unbind();
AnswerCorrectUpdate();
})
}
走==
或===
似乎没有任何区别。我在调试器window.QuestionSelector
中验证了等于-1。
答案 0 :(得分:1)
问题是变量被设置为一个字符串,其计算结果与int非常不同。
在声明变量时,我必须使用parseInt
函数修改我的代码。
window.QuestionSelector = parseInt($(this).attr('data-questionid'));
然后评估按预期进行。