Javascript 如何在google应用程序脚本中全局访问location.hash?
我需要将location.hash存储为一个键,以修改我的google电子表格数据库。不幸的是,console.log()总是显示未定义。是否有其他方法访问该值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
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();
});