不要从函数返回变量

时间:2019-12-26 10:25:45

标签: javascript jquery variables

有关代码的帮助,变量不会返回!用jquery编写,对动态变量有问题。无法返回var flag_target和mask_target。

var flag_target;
var mask_target;

$('.iti_click-1').click(function() {

    $('.firstlist').show();
    var flag_target = $('#flag-1');
    var mask_target = $('.maskNom-1');
    return flag_target, mask_target;

});

$('.iti_click-2').click(function() {

    $('.secondlist').show();
    var flag_target = $('#flag-2');
    var mask_target = $('.maskNom-2');
    return flag_target, mask_target;

});

2 个答案:

答案 0 :(得分:1)

当您在事件处理程序中传递返回值时,此值将传递给事件处理程序,而不是传递给您想要的任何位置……,您将无法执行此操作

var name = $('.eleemnt').click(function() {
    return true;
});

您可以做的是在回调函数范围之外创建一个变量,然后将所需的值保存到其中,如下所示:

var name = '';

$('.element').click(function() {
    name = 'Saved';
});

如果您担心污染全局空间(这是一件好事),可以考虑使用Immediately Invoked Function Expression,就像这样

(function() {
    var name = '';

    $('.element').click(function() {
        name = 30;
        console.log(name);
    });
})();

答案 1 :(得分:1)

因此,如果您需要的是在用户单击事物后能够使用全局变量,只需在单击处理程序内将值分配给全局变量即可:

var flag_target = null;
var mask_target = null;

$('.iti_click-1').click(function() {
    $('.firstlist').show();
    flag_target = $('#flag-1');
    mask_target = $('.maskNom-1');
});

$('.iti_click-2').click(function() {
    $('.secondlist').show();
    flag_target = $('#flag-2');
    mask_target = $('.maskNom-2');
});