我昨天用javascript开始,我正试图从sharepoint 2010列表中获取一些信息,我想把它打印到表格中。 以下代码位于body标记中:
<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(mainFunction, "sp.js");
var typeNumber = "1520";
var statusArray = new Array(3);
try {
function mainFunction() {
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Projektstatus');
//empty Query string cause there are some problems with a lookup field
var emptyCamlQuery = new SP.CamlQuery();
this.collListItem = oList.getItems(emptyCamlQuery);
clientContext.load(collListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
document.write(statusArray[2]);
}
function onQuerySucceeded(sender, args) {
var listItemInfo = '';
var i = 0;
var listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
var oListItem = listItemEnumerator.get_current();
if (oListItem.get_item('Title').match(typeNumber)) {
statusArray[i] = oListItem.get_item('KPI_Status');
//Works fine
alert("nummer:" + i + statusArray[i]);
i++;
}
}
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
var tableOutput = "<table><tr><th>Indikatortyp</th><th>KPI-Status</th></tr>" +
"<tr><td>Kosten</td><td>" + statusArray[2] + "</td></tr>" +
"<tr><td>Technik</td><td>" + statusArray[1] + "</td></tr>" +
"<tr><td>Termin</td><td>" + statusArray[0] + "</td></tr>" +
"</table>"
document.write(tableOutput);
} catch (e) {
alert(e);
}
</script>
带有警报的输出工作正常,但是当我想在表中打印statusArray时,这不起作用,因为变量未定义。我认为这个问题可能与createDelegate()有关。
答案 0 :(得分:1)
问题是因为您使用全局变量statusArray,而创建表的代码在onQuerySucceeded之外。
我的建议是: - 封装statusArray变量 - 在onQuerySucceeded
中移动表的创建