总是获取数组中的最后一项,我需要 JavaScript 闭包吗?
Always get last item in Array, do I need a JavaScript closure?
我有一个函数,它循环遍历一个多维数组,该数组由我网页上一个区域的 id 和一个我必须传递给 Web 服务的参数组成。$.ajax()
调用的返回将是我希望在数组的第一部分中填充(重绘)的 HTML:
function getViews(){
// loop through, need view/jsp name and where we want to put the HTML... need a multidimarray...
var viewArr = [["infoCol","info"],
["noteCol", "notes"],
["buttonsDiv", "buttons"],
["historyPanel","history"],
["servicesPanel","services"],
["noFOUC","dialogs"]
];
// do the loop
for(var i = 0;i<viewArr.length;i++){
var thisArea = viewArr[i][0];
$.ajax({
url:"getView",
type:"POST",
data:{view:viewArr[i][1]},
dataType:"html",
success:function(data){
console.log(thisArea); // this is always noFOUC
// console.log(viewArr[i][0]); // this gives an undefined error...
$("#" + thisArea).html(data);
},
error:function(xhr, ajaxOptions, thrownError){
console.log(xhr.status);
console.log(xhr.statusText);
console.log(thrownError);
}
});
}
}
现在一切都很好,但是尝试在成功viewArr[i][0]
中引用循环的第一部分:回调不起作用!如果我把它放在成功中:它是不确定的。如果我像上面的例子一样在$.ajax()
之外给它一个 var,它总是数组的最后一项!我确定我需要在这里添加一个闭包,但我不确定在哪里或为什么,有人可以解释一下吗?
如果我没有很好地措辞或解释这一点,请告诉我,我会更好地解释。
d我想我有这个...我在循环中放置了一个自执行函数...忘记了异步!循环继续...咚!
function getViews(){
// loop through, need view/jsp name and where we want to put the HTML... need a multidimarray...
var viewArr = [["infoCol","info"],
["noteCol", "notes"],
["buttonsDiv", "buttons"],
["historyPanel","history"],
["servicesPanel","services"],
["noFOUC","dialogs"]
];
// do the loop
for(var i = 0;i<viewArr.length;i++){
(function(){
var thisArea = viewArr[i][0];
$.ajax({
url:"getView",
type:"POST",
data:{view:viewArr[i][1]},
dataType:"html",
success:function(data){
$("#" + thisArea).html(data);
},
error:function(xhr, ajaxOptions, thrownError){
console.log(xhr.status);
console.log(xhr.statusText);
console.log(thrownError);
}
});
})(viewArr[i][0]);
}
}
相关文章:
- 显示数字,然后每5秒随机更改一次(javascript)
- 使函数只运行一次(Javascript)
- 在 JavaScript 中处理数组中的最后一项
- JavaScript for 循环只返回数组中的最后一项
- 当最后一项在javascript中的旋转木马中可见时,如何禁用链接/按钮等
- 只显示/隐藏一项javascript
- Javascript:如何在复选框中只选中一项
- JavaScript splice()方法如果splice()的第一个参数为-1,则删除数组的最后一项
- Javascript:从对象中移除一项
- 用Javascript中的另一项替换数组中的一项
- Javascript Canvas一项闪烁
- Javascript只设置数组中最后一项的属性
- 检查javascript数组中的最后一项
- 选择数组javascript中的最后一项
- Javascript forEach()通过数组:如何获取上一项和下一项
- 总是获取数组中的最后一项,我需要 JavaScript 闭包吗?
- Javascript访问数组中的一项
- Javascript映射数组最后一项
- 比较二维数组和一维数组并删除匹配项(JavaScript)
- Javascript代码,用于从字符串中删除最后一项(如果它存在)