在另一个函数中使用函数内的变量

时间:2016-04-25 07:32:48

标签: javascript jquery

如何使用变量" i"和另一个函数中的值," izq"和" der"? 我需要在其他函数中使用变量。

    $("#gal li a").on('click', openImg);

    function openImg(e){
        e.preventDefault();
        var href = $(this).attr('href');
        i = $(this).parent().index();
        $("#overlay").fadeIn();
        $("#overlay #cont_img img").attr('src', href);
    }

    $(".izq").on('click', function(e){
        e.preventDefault();
        var izq;
        i--;
        if(i < 0){
            i = total-1;
        }
        izq = $("#galeria li a").eq(i).attr('href');
        $("#overlay #cont_img img").attr('src', izq);
    });

    $(".der").on('click', function(e){
        e.preventDefault();
        var der;
        i = (i-1) % total;
        der = $("#gal li a").eq(i).attr('href');
        $("#overlay #cont_img img").attr('src', der);
    });

5 个答案:

答案 0 :(得分:1)

将变量设为全局 - 将其置于全局范围 - http://www.w3schools.com/js/js_scope.asp

答案 1 :(得分:0)

如果您将var i置于这些功能之外,您应该能够在所有功能中使用它

答案 2 :(得分:0)

最好能在全局范围内将变量声明为函数。

$("#gal li a").on('click', openImg);

var i=0;

    function openImg(e){
        e.preventDefault();
        var href = $(this).attr('href');
        i = $(this).parent().index();
        $("#overlay").fadeIn();
        $("#overlay #cont_img img").attr('src', href);
    }

    $(".izq").on('click', function(e){
        e.preventDefault();
        var izq;
        i--;
        if(i < 0){
            i = total-1;
        }
        izq = $("#galeria li a").eq(i).attr('href');
        $("#overlay #cont_img img").attr('src', izq);
    });

    $(".der").on('click', function(e){
        e.preventDefault();
        var der;
        i = (i-1) % total;
        der = $("#gal li a").eq(i).attr('href');
        $("#overlay #cont_img img").attr('src', der);
    });

答案 3 :(得分:0)

虽然您可以使i成为全局范围内的变量。但这可能会导致冲突。 更好的方法是使用namespace模式。 例如

创建一个对象

var myGlobalVariables ={};

现在您可以为此对象添加密钥。

function openImg(e){
        e.preventDefault();
        var href = $(this).attr('href');
        myGlobalVariables.i = $(this).parent().index();
        $("#overlay").fadeIn();
        $("#overlay #cont_img img").attr('src', href);
    }

在所有其他功能中,您可以使用相同的object & key。在其他功能中,您可以使用var m = myGlobalVariables.i;

访问它

答案 4 :(得分:0)

您可以将变量设为全局变量,将它们用作更高范围内的对象的一部分等,或者您可以使用闭包

// prints 0..9
for(var i = 0; i < 10; i++) { console.log(i); };

// any amount of other operations

// prints 10 three times
for(var z = 0; z < 10; z++) { console.log(z); };

您可以详细了解这些内容here