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


Global Javascript vars in jQuery selector callback function

我正在尝试使用 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,从第三个得到 NaN。从这三个中,我可以看到该变量没有传递到 .on() 处理程序函数中。

日历生成页面included_once在索引页面上,然后使用 AJAX 重新生成当月的正确数据。我需要 get 字符串中经过的月份才能知道我需要从当前月份偏移多远。

感谢您的帮助!!

只是不要在函数体内使用 var 关键字。 var将在success function内实例化一个新变量。而且您使用递减/递增运算符是错误的,它唯一的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
});