0

我昨天开始使用 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() 上。

4

1 回答 1

1

问题是因为您使用全局变量 statusArray 并且创建表的代码位于 onQuerySucceeded 之外。

我的建议是: - 封装 statusArray 变量 - 在 onQuerySucceeded 中移动表的创建

于 2013-04-19T08:18:59.747 回答