jQuery变量未按预期进行评估

时间:2015-07-07 21:34:59

标签: javascript jquery

我正在创建一个带有数据流的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。

1 个答案:

答案 0 :(得分:1)

问题是变量被设置为一个字符串,其计算结果与int非常不同。

在声明变量时,我必须使用parseInt函数修改我的代码。

window.QuestionSelector = parseInt($(this).attr('data-questionid'));

然后评估按预期进行。