[英]Passing object array - Unexpected token [
function showConfirm(reArray) {
var theHTML = '';
var optionArray = ["Option 1", "Option 2", "Option 3", "Option 4", "Option 5", "Option 6", "Option 7"];
var myButtons = {};
var j = 1;
for(var i = 0; i < reArray.length; i++){
theHTML +='<div style="text-align:center">'
+ '<span>'+j+'.</span> '
+ '<span>'+reArray[i].RoadNo+'</span> '
+ '<span>'+compass_image(reArray[i].Bearing)+'</span> '
+ '</div><br/>'
j++;
}
for(i = 0; i < reArray.length; i++){
ERROR HERE -----> var placeFunction = function(reArray[i]){
plotRoadInfo(reArray[i]);
$(this).dialog("close");
};
myButtons[optionArray[i]] = placeFunction;
}
$( "#dialog-modal" ).dialog({
height: 300,
modal: true,
buttons: myButtons
});
$('#multipleRE').append(theHTML);
}
因此,該函數將傳遞一個對象數組(reArray),然后為一個jquery對話框創建一個按鈕數組(myButtons)。 我試圖將reArray [i]傳遞給每個按鈕將要使用的函數,該函數將執行plotRoadInfo(reArray [i]);。
我不斷收到“意外令牌[”,但我不知道為什么要為我的生命而死。
您無需在JavaScript中指定參數的類型,只需使用名稱,然后將其用作函數中的數組即可。
var placeFunction = function(reArray){
plotRoadInfo(reArray[i]);
$(this).dialog("close");
};
我認為您甚至不需要指定它,因為當您將其稱為內部函數可以訪問的數組時。
var placeFunction = function() {
plotRoadInfo(reArray[i]);
$(this).dialog("close");
};
正如Pointy指出的那樣,這將遇到共享i
變量的問題,因此每個函數都將引用reArray[reArray.length]
因為在i === reArray.length
時循環將完成。 解決此問題的常用方法是調用一個接受i
作為參數的函數,該函數將返回一個函數。
var placeFunction = (function (item) {
return function() {
plotRoadInfo(item);
$(this).dialog("close");
};
}(reArray[i]));
您使用的語法不正確。
我相信您要執行的操作如下:
var placeFunction =
(function(arrayitem){
return function(){
plotRoadInfo(arrayitem);
$(this).dialog("close");
};
})(reArray[i]);
myButtons[optionArray[i]] = placeFunction;
為什么參數有索引?
function(reArray[i])
你的意思是
function(reArray)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.