Javascript HTMLOnChange并没有启动谷歌的htmlservice

Javascript HTMLOnChange并没有启动谷歌的htmlservice,javascript,html,google-apps-script,Javascript,Html,Google Apps Script,我正在努力学习谷歌的htmlservice是如何工作的。我采取了他们的方法,并修改如下: var whichYear=''; var whichClass=''; function processForm(formObject) { Logger = BetterLog .useSpreadsheet('0AiWcWJrA0KCpdHB2X2pYQ04xSXNDVnNtTnBOX1RRd1E'); Logger.log('in processForm enumeratin

我正在努力学习谷歌的htmlservice是如何工作的。我采取了他们的方法,并修改如下:

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+':: ');

}
<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()" />
关联的html如下所示:

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+':: ');

}
<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事件是否仅可附加到单个元素?

在中的两个下拉菜单之间更改HTML

<p> 

关闭段落标记修复了该问题


错误滑过了渲染器,因此对话框正确渲染,但没有通过监视DOM事件的代码。因此,第二个下拉列表中没有onChange事件。

添加应用程序脚本标记,因为这看起来至少应该记录Enteres Processform。多个google.script.runs应该可以正常工作。但它们都显示出相同的形式。你看不出有什么不同。也检查一下p标签。@Riel我同意日志应该显示ProcessForm是输入的,但事实并非如此。只有对第一个菜单的更改才会触发onChange。我真的不在乎是否知道哪个菜单触发了onchange事件,因为当它在第一个菜单上触发时,我得到了第二个菜单的值。@Riel谢谢!您对p标记的评论导致了解决方案。谢谢