尝试解析数组的结果并打印到控制台时遇到了一些问题。实际上这是一个两部分问题。当我构建数组时,它将向结果添加“未定义”。当我尝试遍历数组中的单个字符串时,它不解析,只返回完整的数组对象。解析数组结果时出现问题
我想要做的是收集从列表视图中选择的所有字段值,并将它们作为单独项目写入另一个子列表。在控制台中显示结果时,它显示为一个对象数组。当我对它运行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