我的代码基于开发人员example。当$(document).ready被注释掉但updateName
在取消注释时无法执行时,代码会起作用。 google.script.run.withSuccessHandler()如何执行$(document).ready中的函数?
的index.html
<form id="myForm">
<input name="myName" type="text" />
<input type="button" value="Submit"
onclick="google.script.run
.withSuccessHandler(updateName)
.processForm(this.parentNode)" />
</form>
<div id="output"></div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
<!-- $(document).ready(function(){ -->
function updateName(myName) {
var div = document.getElementById('output');
div.innerHTML = '<p> ' + myName + '</p>';
}
<!-- )} -->
</script>
code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index');
}
function processForm(formObject) {
var myName = formObject.myName;
Logger.log(formObject.myName);
return myName
}
答案 0 :(得分:2)
当您注释掉$(document).ready
时,updateName()
定义为全局范围。否则,它嵌套在$(document).ready
。
参考:Nested Functions and Closure
$(document).ready
的目的是将页面加载并准备好时要执行的操作括起来。在你的例子中,没有任何事情会发生,因为你所拥有的只是一个函数定义,但没有任何东西可以调用它。