jQuery:在两个引号之间写入变量
jQuery: write variable between 2 quotation mark
我想为输入创建一个循环,以便变量img得到数字1到5,如下所示:
img1, img2 ... img5.
如何在img之后编写$i
?
for ($i=1;$i<=5;$i++) {
function(data) { $('input[name="img1"]').val(data) });
}
注意:img位于两个引号之间。
编辑:
user = $('input[name="name"]').val();
for (var i = 1; i <= 5; i++) {
$.post("test.php", { name: user, num: i },
function(data) {
$('input[name="img'+i+'"]').val(data)
});
}
您在循环中声明的函数看起来很奇怪。这不是有效的javascript。您可以尝试以下操作:
for (var i = 1; i <= 5; i++) {
$('input[name="img' + i + '"]').val(data);
}
或者如果我们假设你已经定义了一些函数:
var foo = function(data, index) {
$('input[name="img' + index + '"]').val(data);
}
你可以这样调用它:
for (var i = 1; i <= 5; i++) {
foo('some data ' + i, i);
}
更新:
评论部分提供了一个有趣的例子:
for (var i = 1; i <= 5; i++) {
$.post(
"test.php",
{ name: username, num: i },
function(data) {
$('input[name="img'+i+'"]').val(data);
}
);
}
这不会起作用,因为i变量可能在循环和AJAX成功回调之间更改了值。要解决此问题,您可以尝试以下操作:
for (var i = 1; i <= 5; i++) {
(function(index) {
$.post(
"test.php",
{ name: username, num: index },
function(data) {
$('input[name="img'+index+'"]').val(data);
}
);
})(i);
}
或者使用$.ajax()
方法,该方法允许您将上下文传递给success
回调:
for (var i = 1; i <= 5; i++) {
$.ajax({
url: 'test.php',
type: 'POST',
data: { name: username, num: i },
context: i, // here we are defining the context
success: function(result) {
// since we have used the context parameter, this variable
// here will point to the value that i had when we initiated
// the AJAX request
$('input[name="img' + this + '"]').val(result);
}
});
}
像这样:
for ($i=1;$i<=5;$i++) {
function(data) { $('input[name="img' + $i + '"]').val(data) });
}
顺便说一句,我猜你来自PHP背景,但在JavaScript中,将$用于变量名并不常见(有时用于jQuery对象除外)。所以通常你会这样写代码:
for (i=1;i<=5;i++) {
function(data) { $('input[name="img' + i + '"]').val(data) });
}
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- 在索引.html和应用.js [node.js] 之间共享变量
- 什么是&&在没有if的行中的变量之间
- 在JavaScript中,如何修复元素显示和变量创建之间的初始差异
- 在Knockoutjs中的ViewModels之间共享变量状态
- 在控制器之间传递变量的最佳方式
- 通过变量在两个数字之间切换
- 在函数之间传递javascript变量
- 在aspx页面c#之间传递/引用/发送变量/会话状态
- 在两个浏览器选项卡之间共享变量范围
- Javascript创建函数,以便在其他函数之间共享变量
- 关于node.js/javascript在文件之间共享变量
- AngularJS:如何在控制器之间传递变量
- 使用 AngularJS 在控制器之间传递变量
- 创建一个变量并在页面之间移动时“存储它”,jQuery
- 在 AngularJS 和非 AngularJS 弹出窗口之间共享变量
- 我需要在jQuery函数和AJAX之间获取一个变量
- 在Ember.js中的方法之间共享变量上下文
- 控制器之间变量名和数据的奇怪行为