Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在google应用程序脚本中全局访问location.hash?_Javascript_Url_Google Apps Script - Fatal编程技术网

Javascript 如何在google应用程序脚本中全局访问location.hash?

Javascript 如何在google应用程序脚本中全局访问location.hash?,javascript,url,google-apps-script,Javascript,Url,Google Apps Script,我需要将location.hash存储为一个键,以修改我的google电子表格数据库。不幸的是,console.log()总是显示未定义。是否有其他方法访问该值 let global_id_str; document.addEventListener("DOMContentLoaded", function() { google.script.url.getLocation(function(location) { global_id

我需要将location.hash存储为一个键,以修改我的google电子表格数据库。不幸的是,console.log()总是显示未定义。是否有其他方法访问该值

let global_id_str;
  document.addEventListener("DOMContentLoaded", function() { 
   
       google.script.url.getLocation(function(location) {
       global_id_str = location.hash;
       document.getElementById("Item").textContent =global_id_str;
     });
     search();
  });
我尝试过使用单独的函数或仅使用console.log()调用。它仍然给出“未定义”。我还尝试使用getElementById将文本内容存储在变量中,但这也是未定义的

  function search(){
   console.log('here',global_id_str);
   var returnedResults = global_id_str === "" ? [] : data.filter(function(r){
        return searchWords.every(function(word){
        return [0].some(function(colIndex){
          return r[colIndex].toString().toLowerCase().indexOf(word) !== -1
          });
        });
        
       });
        
  }

这一定是GAS特有的问题?

google.script.url.getLocation
是一个异步函数。到那时,
location.hash
被设置为
global\u id\u str
search
将已经完成运行

解决方案:
  • search
    移动到回调中:
  • 或者使用承诺/异步等待。看


google.script.url.getLocation
是一个异步函数。到那时,
location.hash
被设置为
global\u id\u str
search
将已经完成运行

解决方案:
  • search
    移动到回调中:
  • 或者使用承诺/异步等待。看

//设置哈希和参数全局变量//////////////////////////////////////////////
var散列,期权,期权;
google.script.url.getLocation(函数(位置){
var搜索=location.parameter;
var search2=location.parameters;
var-ghash=location.hash;
警报(ghash)
位置(ghash,搜索,搜索2);
表格(搜寻)
});
函数位置(ghash,search,search2){hash=ghash;option=search;options=search2;}
/////////////////////结果////////////////////
// http://www.example.com?n=1&name=muhammad(sm)和n=2#头拱
hash=“headingAnchor”
option.name=“穆罕默德(sm)”
选项。n=“1”
选项。n[0]=“1”
optons.n[1]=“2”
//设置哈希和参数全局变量//////////////////////////////////////////////
var散列,期权,期权;
google.script.url.getLocation(函数(位置){
var搜索=location.parameter;
var search2=location.parameters;
var-ghash=location.hash;
警报(ghash)
位置(ghash,搜索,搜索2);
表格(搜寻)
});
函数位置(ghash,search,search2){hash=ghash;option=search;options=search2;}
/////////////////////结果////////////////////
// http://www.example.com?n=1&name=muhammad(sm)和n=2#头拱
hash=“headingAnchor”
option.name=“穆罕默德(sm)”
选项。n=“1”
选项。n[0]=“1”
optons.n[1]=“2”

您的第一个代码块正确获取哈希值。它对我有用。您是否在URL中提供了有效的哈希?(例如)@Diego是的!我不确定这是否是函数或chrome控制台的问题,但事实上我的HTML更新是相应的。但是,当我执行console.log(global_id_str)时;它使我无法定义。您认为这与将全局变量作为全局变量访问全局变量有关吗?将“标记”存储为执行CRUD的ID的另一种方法是什么?我不知道您在哪里调用
console.log(global\u ID\u str)
。您使用块范围声明它,所以当您尝试记录它时,它很可能不再在范围内。尝试更新
search()
以将值作为参数,然后实际将值传递给它…?您的第一个代码块正确地获取了哈希值。它对我有用。您是否在URL中提供了有效的哈希?(例如)@Diego是的!我不确定这是否是函数或chrome控制台的问题,但事实上我的HTML更新是相应的。但是,当我执行console.log(global_id_str)时;它使我无法定义。您认为这与将全局变量作为全局变量访问全局变量有关吗?将“标记”存储为执行CRUD的ID的另一种方法是什么?我不知道您在哪里调用
console.log(global\u ID\u str)
。您使用块范围声明它,所以当您尝试记录它时,它很可能不再在范围内。尝试更新
search()
以将值作为参数,然后实际将值传递给它…?欢迎使用stackoverflow。回答问题时,请解释为什么您认为您的代码片段解决了OP的问题。欲了解更多信息,请点击这里:欢迎来到stackoverflow。回答问题时,请解释为什么您认为您的代码片段解决了OP的问题。有关更多信息,请查看此处:
let global_id_str;
document.addEventListener('DOMContentLoaded', function() {
  google.script.url.getLocation(function(location) {
    global_id_str = location.hash;
    search(); //moved inside callback
    document.getElementById('Item').textContent = global_id_str;
  });
  // search();
});