Jquery:如何获取变量的局部外部函数
Jquery: How to get variable local outside function?
我有一个小问题,如何获取变量"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循环中的
i
或j
是可以的。但作为一个gloabal变量,这是不可以的。在离for循环2000行的地方,没有人知道j
代表什么。使用描述变量的名称。在你的情况下——我不确定j代表什么,这只是一个猜测——也许是my_maxDistanceRoad
相关文章:
- Javascript用函数return替换局部变量
- 每次调用函数时,都要修改Javascript中的局部变量
- 局部变量在闭包中丢失
- 试图将一个局部变量传递给我的ngAside控制器
- jQuery.ajax()访问javascript循环中的beforeEnd局部变量
- 变量只能在函数中局部工作,不能全局工作-Javascript
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- 如何使用局部变量创建全局变量
- 局部全局变量问题 - JavaScript
- 局部数组变量不是数组
- 如何在单击链接后将局部变量发送到部分呈现
- 定义 JavaScript 类的局部变量
- 创建所有原型函数均可访问的局部变量
- 局部变量的声明
- JavaScript:在调用之前将函数重新分配给局部变量,而不是直接调用并对'这'
- 为什么 Javascript 中的类变量在尝试多次调用它们或将它们分配给局部变量时会消失
- 函数中的局部变量
- Jquery:如何获取变量的局部外部函数
- 局部变量仍可通过函数访问
- JavaScript和局部变量是不好的做法