嘗試解析數組的結果並打印到控制檯時遇到了一些問題。實際上這是一個兩部分問題。當我構建數組時,它將向結果添加「未定義」。當我嘗試遍歷數組中的單個字符串時,它不解析,只返回完整的數組對象。解析數組結果時出現問題
我想要做的是收集從列表視圖中選擇的所有字段值,並將它們作爲單獨項目寫入另一個子列表。在控制檯中顯示結果時,它顯示爲一個對象數組。當我對它運行typeof方法時,我相信它顯示爲一個字符串。
重申,爲什麼我得到undefined,爲什麼我的數組不能正確打印控制檯。以下是目前返回的內容(選擇兩條記錄時)和我的代碼的示例。
結果:
undefinedDaffy DuckBugs兔子
不確定
代碼:
// Grabs selected items from getSelected function and passes parameters to writeSelected function
function callAccepted() {
getSelected().done(function(varObjects) {
for (var k in varObjects) {
console.log(varObjects[k]);
}
}); // End getSelected
} // End callAccepted
// Grabs selected items, accepts input from callAccepted or callRejected functions
function getSelected() {
var dfd = $.Deferred(function(){
var ctx = SP.ClientContext.get_current();
var clientContext = new SP.ClientContext();
var targetList = clientContext.get_web().get_lists().getByTitle(ListName);
var SelectedItems = SP.ListOperation.Selection.getSelectedItems(ctx);
var items = [];
var arrItems = [];
for (var i in SelectedItems) {
var id = SelectedItems[i].id;
var item = targetList.getItemById(id);
clientContext.load(item, "Title");
items.push(item);
} // End for
clientContext.executeQueryAsync(
function(){ // Return to button click function
var itemLength = 0;
var itemObjects = [];
for (var j = 0; j < items.length; j++) {
itemObjects = items[j].get_item("Title");
itemLength += itemObjects;
arrItems.push(itemObjects);
}
dfd.resolve(arrItems, itemLength);
},
function(){ // Return to button click function
dfd.reject(args.get_message());
}
); // End ClientContext
}); // End dfd
return dfd.promise();
} // End getSelected
這正是我需要的微調。爲了說明爲什麼我將「var itemObjects」分隔成兩行,我忘記了當我最初合併上面指定的代碼時,它完全因爲某種未知原因而終止了腳本。當我再次分開時,它開始工作。我也通過JSHint運行它,並沒有遇到任何錯誤。無論如何,我編輯發佈正確的工作代碼,對我來說...... – Ghoztrider