jQuery选择器回调函数中的全局Javascript变量

时间:2012-04-05 20:23:40

标签: php javascript jquery

我试图用jQuery调用Ajax,并且需要在页面加载时将一个用PHP设置的变量传递给两个单独的函数,以便按月向前或向后移动我的日历。

var ajax_load = "Loading...",
    loadUrl = "calendar_backend.php",
    month = parseInt(<?php echo $month ?>);
    console.log(month);
    month = <?php echo $month ?>;

$("#calendar_box").on("click",'#next_month',function(){  
    console.log(month);
    $("#calendar")  
        .html(ajax_load)  
            .load(loadUrl, "month=" + month + "&go=next");
    var month = ++month;

    console.log(month);
});

$("#calendar_box").on("click",'#previous_month',function(){  
    $("#calendar")  
        .html(ajax_load)  
            .load(loadUrl, "month" + month + "&go=previous");  
    var month = --month;
});

我在那里有控制台调用尝试调试这个,我从第一个.log()中定义了第4个未定义的4和第三个的NaN。从这三个中我可以看到变量没有被传递到.on()处理函数。

日历生成页面包含在索引页面上,然后AJAX将用于重新生成月份的正确数据。我需要在get字符串中传递的月份才能知道我需要偏离当前月份的距离。

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

只是不要在函数体内使用var关键字。 var会在success function内设置一个新变量。你使用decress / incresse运算符错了,它只有month++;month--;

var ajax_load = "Loading...",
    loadUrl = "calendar_backend.php",
    month = parseInt(<?php echo $month ?>);
    console.log(month);
    month = <?php echo $month ?>;

$("#calendar_box").on("click",'#next_month',function(){  
    console.log(month);
    $("#calendar")  
        .html(ajax_load)  
            .load(loadUrl, "month=" + month + "&go=next");
    month++; // Removed var and incressing

    console.log(month); 
});

$("#calendar_box").on("click",'#previous_month',function(){  
    $("#calendar")  
        .html(ajax_load)  
            .load(loadUrl, "month" + month + "&go=previous");  
    month--; // Removed var and decressing
});