【问题标题】:JS Variable Not Being Passed CorrectlyJS 变量未正确传递
【发布时间】:2020-07-23 09:33:08
【问题描述】:

我一直在研究这段代码。我有一个 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;
}

【问题讨论】:

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

标签: javascript html jquery google-apps-script


【解决方案1】:

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

试试e.stopImmediatePropagation(); 这会阻止其余的事件处理程序被执行。

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

【讨论】:

    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2021-02-05
    • 2018-05-09
    • 2020-07-21
    • 2020-03-08
    相关资源
    最近更新 更多