我正在從XML文件創建JavaScript 2D數組,然後在顯示頁面之前根據需要對其進行操作和篩選。當我循環遍歷XML記錄時,我操縱數據一點,從它建立一個正常的數組(rowRecord),然後將此數組添加到二維數組(dataSet)。事情是,我結束了一個很好的二維數組,但所有的記錄都是我添加的最後一個記錄的重複。Javascript 2D數組問題 - 所有元素都是最終條目的副本
使用一些警報我發現,當我添加第一個記錄時,一切都很好。然後添加第二條記錄,我得到一個帶有2條記錄的數據集,這兩條記錄都是記錄2.將第三條結果添加到3條記錄的數據集中,每條記錄都是第三條記錄的副本。這對所有1300條記錄都有效,導致1300條相同的記錄,所有這些都是XML中的最後一條記錄。
下面是代碼:
var rowRecord = new Array();
var dataSet = new Array(rowRecord);
function getAjaxTridionInfo() {
var xmlFilename = 'filename.xml';
// make ajax call here, create xml object
xmlData = new Ajax.Request(xmlFilename,{
method:'get',
onSuccess: function(transport) {
var dataObj = transport.responseXML;
var vRoot = dataObj.getElementsByTagName('Items')[0];
for (var i=0; i<vRoot.childNodes.length; i++) {
if (vRoot.childNodes[i].nodeType == 1) {
var tridItem = vRoot.childNodes[i];
rowRecord[0] = tridItem.childNodes[0].firstChild.nodeValue.substring(26);
rowRecord[1] = tridItem.childNodes[1].firstChild.nodeValue;
rowRecord[2] = tridItem.childNodes[2].firstChild.nodeValue;
rowRecord[3] = rowRecord[1]+"/"+rowRecord[2];
rowRecord[4] = false;
rowRecord[5] = "n/a";
rowRecord[6] = "n/a";
rowRecord[7] = false;
rowRecord[8] = "n/a";
rowRecord[9] = "n/a";
//do some other processing here to determine rowRecord[4] - [9]
dataSet.push(rowRecord);
rowCount += 1;
}
}
//call next function here
},
onException: function(transport, exception) {
throw(exception);
alert('There has been a problem performing the Ajax call');
}
}
);
}
任何幫助或建議,將不勝感激。
你的答案的組合已經解決了這個問題。謝謝大家! – Keef 2010-07-05 12:09:50