javascript - 单击新窗口,在新窗口中更改元素

标签 javascript google-apps-script

我正在使用 onclick 打开链接。我正在尝试使用 JS 更新窗口中的输入框。我尝试过这样做:

var str = "text";

<a href="javascript:void(0);"  onclick="window.open('https://jsfiddle.net/ncw1L0uk/show/');document.getElementById("input1").value=str;">link</a>

我正在 Google 表单 -> 电子表格内的 appscript 中执行此操作。生成的电子邮件提供了链接,因此我认为我仅限于内联脚本编写。

最佳答案

您需要转义双引号或使用单引号:

var str = "text";
<input type="text" value="" id="input1" />
<a href="javascript:void(0);" onclick="window.open('https://jsfiddle.net/ncw1L0uk/show/');document.getElementById('input1').value=str;">link</a>

或者如果 appscript 允许的话最好使用函数:

var str = "text";

function openAndChangeText() {
  window.open('https://jsfiddle.net/ncw1L0uk/show/');
  document.getElementById('input1').value=str;
}
<input type="text" value="" id="input1" />
<a href="javascript:openAndChangeText()">link</a>

P.S.您不会在上述代码片段中看到弹出窗口,因为弹出窗口被嵌入的 fiddle 阻止(检查您的开发人员工具的控制台)。

更新1

如果您想更改新打开的窗口中元素的文本,您需要打开它,等待它加载,然后更改输入的值。

var str = "text";

function openAndChangeText() {
  var win= window.open('https://jsfiddle.net/ncw1L0uk/show/');
  win.onload= function() {
    win.document.getElementById('input1').value=str;
  }

}
<a href="javascript:openAndChangeText()">link</a>

发布的代码再次无法在 JSFiddle 中运行,因为弹出策略阻止打开窗口。

更新2

如果您无法使用普通函数,请在链接内使用闭包:

<a href="javascript:(function() { var str= 'Test1'; var win= window.open('https://jsfiddle.net/ncw1L0uk/show/'); win.onload=function() { win.document.getElementById('input1').value=str;}})()">Click</a>

关于javascript - 单击新窗口,在新窗口中更改元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49406447/

相关文章:

google-apps-script - WebApp 访问的库中的 ScriptDb

javascript - 纯 JS 或 Lodash - 用其他对象的值替换对象值

javascript - 如何确保元素不可见并继续 Protractor 中的下一个条件

google-apps-script - 远程编辑谷歌文档

google-apps-script - 为什么使用任务服务插入新任务时没有设置时间?

javascript - 在两个函数之间传递变量

javascript - Angular JS 生成 PDF - 任何创建者 - 制造商模块?

javascript - 从 Angular 形式数据构建表格

javascript - 使用 E 列中的数组公式发送电子邮件不起作用

github - 如何最好地开发 Google Sheets 脚本和 Git 版本控制