我正在使用Google Scripts。
我目前有一个脚本,如果你点击一个框,它应该打开一个带有从电子表格中绘制的URL的新标签。
脚本正确地提取正确的URL:
var url = mainObj[i].link;
以下脚本会打开正确的网址。
arr[i].onclick = function open() {window.open("https://drive.google.com/drive/my-drive", "_blank") };
因此,如果我将URL硬编码到我的脚本中,则window.open似乎正常工作。但是,我从电子表格中提取数据,因此我使用for循环迭代此函数。
所以,如果我尝试这样做:
arr[i].onclick = function open() {window.open(mainObj[i].link, "_blank") };
甚至
var url = mainObj[i].link;
arr[i].onclick = function open() {window.open(url, "_blank") };
...两种情况都给我400错误。有什么不同?
编辑:我认为这是因为目前变量url
没有双引号,但是当我执行以下操作时,错误仍然存在。
var url = '"' + mainObj[i].link + '"';
console.log(url);
arr[i].onclick = function open() {window.open(url, "_blank") };
答案 0 :(得分:1)
如果你处于循环中,当你在onclick函数中设置它时,“i”索引不会保存,你需要将它封装在一个匿名函数中并将“i”传递给这个函数
for(var i = 0; i < arr.length; i++){
(function(i){
arr[i].onclick = function open() {window.open(mainObj[i].link, "_blank") };
})(i);
}
你可以在这里看到一个例子,第一个功能所有的按钮都是相同的onclick,secodn是固定的: https://jsfiddle.net/angelmarde/5gegt2o6/