Javascript JS变量未正确传递

Javascript JS变量未正确传递,javascript,html,jquery,google-apps-script,Javascript,Html,Jquery,Google Apps Script,我已经研究这个代码有一段时间了。我有一个HTML、JS和Code.JS页面 更改HTML表单上下拉列表中的值时,下拉列表中的项将传递给Code.js以返回结果,但是,我的结果始终为NULL-arr是结果 另一个问题是,我可以在脚本日志中看到getRowData()被执行了两次,不知道为什么,但这可能会覆盖我们的数组 HTML JS //$('#searchDropdown').one('change', function(){ //$("#searchDropdown").c

我已经研究这个代码有一段时间了。我有一个HTML、JS和Code.JS页面

更改HTML表单上下拉列表中的值时,下拉列表中的项将传递给Code.js以返回结果,但是,我的结果始终为NULL-arr是结果

另一个问题是,我可以在脚本日志中看到getRowData()被执行了两次,不知道为什么,但这可能会覆盖我们的数组

HTML

JS

//$('#searchDropdown').one('change', function(){
//$("#searchDropdown").change(function(){  
//$('#searchDropdown').on('keyup propertychange change', function(){
//$('#searchDropdown').on('input', function(){
//$('#searchDropdown').one('submit', function(){

  $('#searchDropdown').one('change', function(){ 

      var selatr = $('#input1').val();
      google.script.run.withSuccessHandler(poperr).getRowData(selatr);
      
   });
   
   function poperr(arr){
   alert(arr +" ! ");     
   }  
代码.GS

function getRowData(selatr){
  //Vlookup a GoogleSheet and return the resulting row
  sheet_data.getRange(2,16).setValue(selatr); //set for vlookup
  var x = sheet_data.getRange(3,16).getValues();
  var arr= [];
  arr.push({ 
    id : selatr
    name : sheet_data.getRange(x,2).getValues()
  })
  return arr;
}

这可能是因为您的代码中有多个事件处理程序,并且您的
getRowData
函数被调用了两次

尝试
e.停止即时复制()这将停止执行其余的事件处理程序

  $('#searchDropdown').one('change', function(e){ 
     e.stopImmediatePropagation();
     var selatr = $('#input1').val();
     google.script.run.withSuccessHandler(poperr).getRowData(selatr);
  
  });

你确定你的vlookup成功返回了一些数据,并且你的arr在getRowData函数中有一些值吗?谢谢你的建议!我在getRowData()的末尾添加了一个Logger.Log()来查看arr。我可以看到arr是正确的