我正在尝试了解Google的htmlservice的工作原理。我采取了他们的example code for the form并修改如下:
var whichYear='';
var whichClass='';
function processForm(formObject) {
Logger = BetterLog
.useSpreadsheet('0AiWcWJrA0KCpdHB2X2pYQ04xSXNDVnNtTnBOX1RRd1E');
Logger.log('in processForm enumerating properties');
for(var prop in formObject){
Logger.log('Entered processForm - prop::'+prop+'--value-- '+formObject[prop]+':: ');
if( prop == 'yearSelect')
{
if (formObject[prop] != 'nochange')
whichYear=formObject[prop];
}
else
if(prop == 'classSelect'){
if(formObject[prop]!= 'nochange')
whichClass = formObject[prop];
}
if (whichClass != '' && whichYear!='')
tallyClass();
}
return 'a string';
}
function tallyClass(){
Logger = BetterLog
.useSpreadsheet('0AiWcWJrA0KCpdHB2X2pYQ04xSXNDVnNtTnBOX1RRd1E');
Logger.log('Entered tallyClass - whichYear::'+whichYear+'--whichClass--'+whichClass+':: ');
}
关联的html如下所示:
<script>
function updateUrl(url) {
var div = document.getElementById('output');
div.innerHTML = '<a href="' + url + '">Please choose which group to tally.</a>';
}
</script>
<form>
<select name="yearSelect" id="yearSelect" onchange="google.script.run
.withSuccessHandler(updateUrl)
.processForm(this.parentNode)" >
<option value="nochange">Please select a year</option>
<option value="2006">2006</option>
<option value="2010">2010</option>
</select>
<p>
<select name="classSelect" id="classSelect" onchange="google.script.run
.withSuccessHandler(updateUrl)
.processForm(this.parentNode)" >
<option value="nochange">Please select a class</option>
<option value="oldbie">oldbie</option>
<option value="newbie">newbie</option>
</select>
</form>
<p>
<div id="output"> </div>
<input type="button" value="Close" onclick="google.script.host.close()" />
我正在尝试避免使用提交按钮,以便我可以动态响应菜单选择事件。选择哪一年按预期触发formProcess函数,但相同的类选择菜单不执行任何操作。
我希望看到的是当选择一个菜单时,我会收到onchange事件调用。当我收到两个onchange事件调用时,我将处理用户的选择。
我很确定我可以做一个onSubmit调用并完成它但我真的很想知道为什么如果选择了第二个菜单,我永远不会得到onchange调用。
onchange事件只能附加到单个元素吗?
答案 0 :(得分:0)
从
更改两个下拉菜单之间的HTML<p>
到
<p></p>
关闭段落标记修复了问题。
错误滑过渲染器,因此对话框正确呈现,但没有通过监视DOM事件的代码。因此,第二次下拉列表中没有onChange事件。