Javascript 将索引传递给jQuery
我正在尝试使用jQuery更新文档中的一组元素 我无法将Javascript 将索引传递给jQuery,javascript,jquery,Javascript,Jquery,我正在尝试使用jQuery更新文档中的一组元素 我无法将I索引传递给$.post回调函数 这是密码 function updateValues(){ val=document.getElementsByName('valueAN'); for ( i=0; i < val.length; i++ ){ $.post('',{func:'updateAN',index:i}, (function(data,status){ val[i].valu
I
索引传递给$.post
回调函数
这是密码
function updateValues(){
val=document.getElementsByName('valueAN');
for ( i=0; i < val.length; i++ ){
$.post('',{func:'updateAN',index:i},
(function(data,status){
val[i].value = data;
})(i));
}
}
函数updateValues(){
val=document.getElementsByName('valueAN');
对于(i=0;i
在$.post()的回调函数中使用i
。在执行此回调函数时,for
循环的已经完成,因此i
处于上次启用的值。这是异步代码中容易混淆的问题之一
最后,这意味着在回调函数内部,您不能依赖回调函数外部的变量
您可以使用@Yukulélésuggest之类的闭包,也可以使用为每个$.post()
回调创建自定义回调函数,但在这样做之前,请确保检查该函数。您应该使用闭包:
function updateValues(){
val=document.getElementsByName('valueAN');
for ( i=0; i < val.length; i++ ){
(function(i){
$.post('',{func:'updateAN',index:i}, function(data,status){
val[i].value = data;
});
})(i);
}
}
函数updateValues(){
val=document.getElementsByName('valueAN');
对于(i=0;i
试试看
var val=$(“[name=valueAN]”);
函数updateValues(){
返回$.when.apply(val,$.map)(val,函数(el,键){
返回$.get(“https://gist.githubusercontent.com/guest271314/6a76aa9d2921350c9d53/raw/49fbc054731540fa68b565e398d3574fde7366e9/abc.txt"
,{func:“updateAN”}
,功能(数据、状态){
el.值=数据;
});
}));
};
updateValue()。然后(函数(){
$.each(参数、函数(键、值){
console.log(key,val)
});
$。每个(val,函数(i,el){
控制台日志(el.value)
})
});代码>
您试图使用clousure,但却将i
抛在了后面
如果您使用的是jQuery:
如果您使用的是纯Javascript,那么您应该遵循@Yukuléléanswer,在您的情况下,i
将始终使用val.length-1
的值传递给函数,并且您将使用相同的argsi
次数执行$post
ajax调用。您能将var放在i前面吗for(var i=0;i
,看看这是否有效?当前的代码只是将1-8放在元素上-它忽略了服务器返回的字符串…如果您使用的是JQuery,为什么不使用$。每个
函数都可以循环您的元素?ochi-您能告诉我如何使用它吗?
var val = $("[name=valueAN]");
function updateValues() {
return $.when.apply(val, $.map(val, function(el, i) {
return $.post("", {"func": "updateAN", "index": i}
, function(data, status) {
el.value = data;
});
}));
};
updateValues().then(function() {
$.each(arguments, function(key, val) {
console.log(key, val)
});
$.each(val, function(i, el) {
console.log(el.value)
})
});
function updateValues(){
$("valueAN").each(function(i) {
$.ajax({
type: "POST",
url: "/",
data: {func:'updateAN',index:i},
success: function(data){
$(this).val(data);
}
});
});
}