0

我试图弄清楚为什么我不能访问theHeaders函数之外的变量。我试过返回它,然后直接调用该函数,我得到了一个colListItem定义。我这样称呼它:

alert(onQuerySucceeded());alert(onQuerySucceeded(sender, args));

我每次都得到一个未定义的。

如何访问 theHeaders函数之外的内容?

我不明白为什么我可以让它在函数中的 alert() 消息中工作,onQuerySucceeded()但我不能做类似doucment.write. 如果我尝试除 alert() JavaScript 之外的任何其他操作,我会收到权限被拒绝错误:

var siteUrl = '/sites/dev/';
ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js");
function retrieveListItems()
{
    var clientContext = new SP.ClientContext(siteUrl);
    var oList = clientContext.get_web().get_lists().getByTitle('myList');

    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml("<Where><IsNotNull><FieldRef Name='Title' /></IsNotNull>  </Where>");
    this.collListItem = oList.getItems(camlQuery);
    clientContext.load(collListItem);

    clientContext.executeQueryAsync(Function.createDelegate(this,     this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));

}

function onQuerySucceeded(sender, args) 
{


    var listItemEnumerator = collListItem.getEnumerator();
    var theHeaders = "";
    while (listItemEnumerator.moveNext()) 
    {
        var oListItem = listItemEnumerator.get_current();
        theHeaders = theHeaders + oListItem.get_item('Title');


    }
    alert(theHeaders);


}
function onQueryFailed(sender, args) 
{
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
4

2 回答 2

0

不要使用document.write,因为它会破坏您的页面内容。将您的结果注入 adiv是更好的。就像是 :

document.querySelector('#myDiv').innerHTML = theHeaders

顺便说一句,你不能使用alert(onQuerySucceeded());,因为onQuerySucceeded()从 异步调用retrieveListItems(),所以它不能返回值。

于 2013-08-27T06:58:41.027 回答
0

如果您在文件顶部(声明 siteUrl 的位置)声明变量并从函数内删除声明,则应该能够在函数外访问它。但是,这意味着您正在更改变量的范围。如果你没问题,它应该可以工作。

于 2013-08-26T00:28:01.257 回答