我正在开发一个jquery,其中用户选择一个类别,然后选择一个年份范围。
我的问题是尽管得到了cats is not defined,但可以使用alert(cats);中的$('[id^="multi-"]').click(function () {看到它

但是当我选择年份范围时,未定义$("#multi_select_wrapper").keyup(function(){“ cats”变量

$('[id^="multi-"]').click(function () {
            $(this).toggleClass('selected');
            var cats = [];
            $(".selected").each(function(){
                cats.push($(this).attr('data-id'));
            });
            var cats = cats.join(",");
            alert(cats);
    });

            $("#multi_select_wrapper").keyup(function(){
                    if(f_year!==null && t_year!==null){
                            var years = [];
                            var counter = parseInt(t_year)+1;

                            for (var i = f_year; i < counter; i++) {
                                    years.push(i);
                            }
                            alert(years);
                            alert(cats);
                    }
                    $("#multi_search").attr("href", "index.php?do=m&msc=" + cats + "&msy=" + years);
            });

最佳答案

cats仅在点击处理程序函数中声明,并且在该点击处理程序运行之前不会提供值。它的值仅在该函数内部可用。

如果您希望cats在该函数之外可用,则必须在更高的范围内声明cats(例如,可能将其作为全局变量或更高的范围)。然后,该值可以在点击处理程序函数运行后的任何时间使用。

此外,您不应在点击处理程序中两次声明cats变量。这不会导致错误,但是不正确。每个作用域仅用var声明一次。

关于jquery - 变量未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16848862/

10-11 14:05