Jquery:如何获取变量的局部外部函数

Jquery: How to get variable local outside function?

本文关键字:变量 局部 外部 函数 获取 何获取 Jquery      更新时间:2023-09-26

我有一个小问题,如何获取变量"j"并将其打印到函数之外。变量"j"位于计算输入数量的for循环中,我想把这个变量放在整个函数之外。请帮助

$(function () {
    var scntDiv = $('#p_scents');
    var i = $('#p_scents p').size() + 1;
    if (i == i) {
        document.getElementById("counter").innerHTML = 1;
    }
    $('#addScnt').live('click', function korzen() {
            $('<p><label for="p_scnts"><input type="text" id="p_scnt' + i + '" size="20" name="p_scnt_' + i + '" value="" placeholder="id' + i + '" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
            i++;
            for (var j = 1; j < i; j++) {
                //-----"j" this varible otuside function
            }
            return false;
        }
    );
    $('#remScnt').live('click', function () {
        if (i > 2) {
            $(this).parents('p').remove();
            i--;
            for (var j = i; j >= i; j--) {
                document.getElementById("distance_road").innerHTML = j - 1;
            };
        }
        return false;
    });
});
document.getElementById("counter").innerHTML = j;

我对您的代码做了一些更改。。。

var j = 0;
$(function () {
    var scntDiv = $('#p_scents');
    var i = $('#p_scents p').size() + 1;
    if (i == i) {
        document.getElementById("counter").innerHTML = 1;
    }
    $('#addScnt').live('click', function korzen() {
            $('<p><label for="p_scnts"><input type="text" id="p_scnt' + i + '" size="20" name="p_scnt_' + i + '" value="" placeholder="id' + i + '" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
            i++;
            for (j = 1; j < i; j++) {
                //-----"j" this varible otuside function
            }
            return false;
        }
    );
    $('#remScnt').live('click', function () {
        if (i > 2) {
            $(this).parents('p').remove();
            i--;
            for (j = i; j >= i; j--) {
                document.getElementById("distance_road").innerHTML = j - 1;
            };
        }
        return false;
    });
});
document.getElementById("counter").innerHTML = j;

您所拥有的原型:

(function() {
    for(var i=0; i<10;i++) {
    console.log(i);
}
})();
console.log("i: "+i);

导致:Uncaught ReferenceError: i is not defined

删除for循环中的var,就有了一个全局变量:

(function() {
    for(i=0; i<10;i++) {
    console.log(i);
}
})();
console.log("i: "+i);

也可以在这里查看:http://jsfiddle.net/7t8Xy/

附加说明:

  • 使用全局变量时,请在变量上使用前缀。其他代码也使用j作为变量名的可能性很大。我试图防止全局变量。但如果必须的话,我会使用一个前缀,比如项目名称或公司名称。在你的情况下,可能只是my_j
  • 为全局变量使用一个好名字。for循环中的ij是可以的。但作为一个gloabal变量,这是不可以的。在离for循环2000行的地方,没有人知道j代表什么。使用描述变量的名称。在你的情况下——我不确定j代表什么,这只是一个猜测——也许是my_maxDistanceRoad