为什么 runCode() 函数只能通过按钮 onclick 运行?从这个链接尝试了不同的选项,结果仍然没有改变,我应该注意什么?
var viewCollection = null;
function runCode() {
var clientContext = new SP.ClientContext.get_current();
if (clientContext != undefined && clientContext != null) {
var web = clientContext.get_web();
var listCollection = web.get_lists();
var list = listCollection.getByTitle("Tasks");
this.viewCollection = list.get_views();
var viewInfo = new SP.ViewCreationInformation();
viewInfo.set_title('MyView');
this.viewCollection.add(viewInfo);
clientContext.load(this.viewCollection);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
}
function onQuerySucceeded() {
var viewInfo = 'Tasks list current views: \n\n';
var viewEnumerator = this.viewCollection.getEnumerator();
while (viewEnumerator.moveNext()) {
var view = viewEnumerator.get_current();
viewInfo += view.get_title() + '\n';
}
alert(viewInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
<input id="Button1" type="button" value="Run Code" onclick="runCode()" />
很可能违反了脚本的执行顺序。检查脚本的加载顺序。当您单击按钮时,将触发 onClick 事件,通常此时整个页面已加载。因此,无论您将按钮放在何处,都会调用该函数。但是,如果你注意下面的例子,它
window.onload不会调用这个函数,因为这个函数还不存在。还有另一种选择,您可以异步连接一些脚本。这可能就是问题所在。