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

ファイルの先頭 (siteUrl を宣言する場所) で変数を宣言し、関数内から宣言を削除すると、関数の外で変数にアクセスできるようになります。ただし、それは変数のスコープを変更していることを意味します。それでよければ、うまくいくはずです。

于 2013-08-26T00:28:01.257 に答える