Google HTML 服务 - 动态表单
Google HTML service - Dynamic form
我正在尝试使用 Google App Script 平台创建一个表单,并且我正在尝试通过按 UI 中的按钮动态添加元素。
我该怎么做?
这是我的代码:
index.html
<form id="myForm">
Name <input name="myName" type="text" /><br/><br/>
Address <input name="myAddress" type="text" /><br/><br/>
<input type="button" value="Add element" onclick="google.script.run.withSuccessHandler(addElement)" />
<input type="button" value="submit" onclick="google.script.run.withSuccessHandler(showData).processForm(this.form)" />
</form>
<div id="output"></div>
<script>
function addElement(){
document.getElementById('myForm').append("input");
}
function showData(data){
var div = document.getElementById('output');
div.innerHTML = '<p>' + data + '</p>';
}
</script>
这里是Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index').setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
function processForm(formObject){
Logger.log(formObject);
return formObject;
}
感谢您的帮助!
您正在调用 Google 服务器端函数而不是脚本标记中的函数:
<input type="button" value="Add element" onclick="google.script.run.withSuccessHandler(addElement)" />
应该是:
<input type="button" value="Add element" onclick="addElement()" />
我看到你在使用 innerHTML
,所以你知道。
您似乎正在尝试使用元素对象不可用的方法(追加)。也许您将 UI 方法与 DOM(文档对象模型)混淆了。
如果你想添加一个输入标签,你可以使用这样的东西:
function addElement(){
document.getElementById('myForm').innerHTML = "<input type='text' id='inputTwo'>";
}
还有一个appendChild
方法:
appendChild method - Microsoft Documentation
还有一个createElement
方法:
createElement Method - Mozilla Documentation
因此,您可以使用 Document 对象或 Element 对象。 Document 对象的方法是:
- document.createElement()
- document.removeChild()
- document.appendChild()
- document.replaceChild()
我正在尝试使用 Google App Script 平台创建一个表单,并且我正在尝试通过按 UI 中的按钮动态添加元素。 我该怎么做? 这是我的代码:
index.html
<form id="myForm">
Name <input name="myName" type="text" /><br/><br/>
Address <input name="myAddress" type="text" /><br/><br/>
<input type="button" value="Add element" onclick="google.script.run.withSuccessHandler(addElement)" />
<input type="button" value="submit" onclick="google.script.run.withSuccessHandler(showData).processForm(this.form)" />
</form>
<div id="output"></div>
<script>
function addElement(){
document.getElementById('myForm').append("input");
}
function showData(data){
var div = document.getElementById('output');
div.innerHTML = '<p>' + data + '</p>';
}
</script>
这里是Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index').setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
function processForm(formObject){
Logger.log(formObject);
return formObject;
}
感谢您的帮助!
您正在调用 Google 服务器端函数而不是脚本标记中的函数:
<input type="button" value="Add element" onclick="google.script.run.withSuccessHandler(addElement)" />
应该是:
<input type="button" value="Add element" onclick="addElement()" />
我看到你在使用 innerHTML
,所以你知道。
您似乎正在尝试使用元素对象不可用的方法(追加)。也许您将 UI 方法与 DOM(文档对象模型)混淆了。
如果你想添加一个输入标签,你可以使用这样的东西:
function addElement(){
document.getElementById('myForm').innerHTML = "<input type='text' id='inputTwo'>";
}
还有一个appendChild
方法:
appendChild method - Microsoft Documentation
还有一个createElement
方法:
createElement Method - Mozilla Documentation
因此,您可以使用 Document 对象或 Element 对象。 Document 对象的方法是:
- document.createElement()
- document.removeChild()
- document.appendChild()
- document.replaceChild()