我的变量出了什么问题,它是未定义的

时间:2013-09-15 08:30:07

标签: javascript jquery

我的变量todoHtmlLi未定义,真的无法理解为什么..我在将它分配给某个html之前就已经提前声明了。我使用console.log()来检查优先级值,它工作得很好..

$(document).on('click', '#addTodoBtn', function () {
    var todoDialog = {
        state0: {
            html: dialogContent,
            buttons: {
                Cancel: -1,
                Add: 0
            },
            focus: 1,
            submit: function (e, v, m, f) {
                e.preventDefault();

                var todoHtmlLi;
                var todoNameVal;
                var todoNoteVal;

                //Task Name
                todoNameVal = $("#todoName").val();
                todoNameVal.trim();

                //Note
                todoNoteVal = $("#todoNote").val();
                todoNoteVal.trim();

                //Priority 
                priority = $("#priority").val();

                if ($(priority) === 1) {
                    todoHtmlLi = "<li style='background:red'><a href='#'>" + todoNameVal + "<input type='checkbox'></a></li>"
                } else if ($(priority) === 2) {
                    todoHtmlLi = "<li style='background:green'><a href='#'>" + todoNameVal + "<input type='checkbox'></a></li>"
                } else if ($(priority) === 3) {
                    todoHtmlLi = "<li style='background:blue'><a href='#'>" + todoNameVal + "<input type='checkbox'></a></li>"
                }

                if (v == 0) {
                    if (todoNameVal !== "") {

                        $("div#tab").find('#todoUl').prepend(todoHtmlLi);

                        $.prompt.close();

                    } else {
                        $("#todoName").focus();
                    }

                } else {
                    $.prompt.close();

                }
            }
        }
    }

    $.prompt(todoDialog);
});

if(v == 0){表示单击“是”按钮

2 个答案:

答案 0 :(得分:1)

首先:您只需根据todoHtmlLi(将是一个字符串)的调用的返回值与使用{{的数字进行比较,将值分配给val() 1}}(检查类型)。

由于===不成立,因此您永远不会指定值。

使用"1" === 1,与字符串比较或转换为数字。

第二次:您将值作为参数传递给==,因此您将获得一个jQuery对象而不是该String。这没有任何意义,所以不要这样做。

$

答案 1 :(得分:0)

因为conditions错误。

看,

  priority = $("#priority").val();

returns一个string

然后

  if($(priority) === 1){

这是错误的,因为1永远不等于"1",所以没有条件满足。它; s undefined

你的if条件应该是

   if(priority === "1"){

如果需要改变条件,也要保持不变。