【问题标题】:Returning variables outside a function返回函数外的变量
【发布时间】:2013-03-27 05:47:48
【问题描述】:

我在通过 jQuery 函数返回变量时遇到问题。

$(document).ready(function () {
    var selected = "";

    $('.whitetheme').on('click', function () {
        $(this).effect("highlight", {}, 2000);
        selected = "whitetheme";
        return selected;

        $('.blacktheme').fadeOut(1500);
        $('.redtheme').fadeOut(1500);

    })

    console.log(selected);
});

我试图在单击后将 selected 的值更改为“whitetheme”。

现在,日志函数返回一个空字符串。

【问题讨论】:

  • 点击事件后是否返回空字符串?注意到您在更新之前记录了该值...

标签: jquery return


【解决方案1】:

您正在绑定一个事件处理程序,该处理程序将(并且如果被调用)会更改变量值。但是,在执行console.log 之前,该事件不会发生,因此您看不到更新后的值。

此外,您的 blacktheme 和 redtheme 类不会淡出,因为该代码部分无法访问。

你到底想达到什么目的?

【讨论】:

  • 我正在尝试将变量“选定”设置为字符串值
【解决方案2】:

尝试像这样稍微改变一下,这样您的 console.log 在您点击后就会打印出来。

$(document).ready(function () {
    var selected = "";

    $('.whitetheme').on('click', function () {
        $(this).effect("highlight", {}, 2000);
        selected = "whitetheme";
        // return selected; don't need this or the next 2 lines won't execute

        $('.blacktheme').fadeOut(1500);
        $('.redtheme').fadeOut(1500);

        console.log("selected: "+selected);
    });
    // console.log(selected); moved above
});

【讨论】:

  • 我需要在函数之外记录值
  • 您也可以将值记录在外部,但在用户单击“whitetheme”元素之前,该值不会更新,因此您的空字符串将被打印出来。
【解决方案3】:

同意我上面的问题/评论:

$(document).ready(function() {

var selected = "";

$('.whitetheme').on('click', function(){
$(this).effect("highlight", {}, 2000);
selected = "whitetheme";

/*Moved this line*/
console.log(selected);

return selected;
$('.blacktheme').fadeOut(1500);
$('.redtheme').fadeOut(1500);

})
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 2016-04-21
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多