【问题标题】:Copy value from input field从输入字段复制值
【发布时间】:2021-12-24 21:48:05
【问题描述】:

我需要将输入字段中的值复制到剪贴板。我没有得到输入字段的值,而是得到了 null。

这是我的代码:

<input type="text" value=${model.anchor_url} id=${properties.anchor_name}>
<button class="c-button" onclick="myFunction()">
    <span class="c-button__label">Copy</span>
</button>
<div data-sly-test="${model.anchor_url}">
    <p>URL from Model :</p>
    <pre>${model.anchor_url}</pre>
</div>
function myFunction() {
    const field = document.getElementById(`${properties.anchor_name}`);
    navigator.clipboard.writeText(field);
    alert("Copied the text to clipboard: " + field);
}

field 变量的值结果为 null,即使 id 存在并且它有一个值。

【问题讨论】:

  • 这能回答你的问题吗? How do I copy to the clipboard in JavaScript?
  • properties.anchor_name 的值是多少?看起来您使用字符串 ${properties.anchor_name} 作为输入的 ID,而不是变量的值。
  • properties.anchor_name 是一个变量,它有一个值,例如。锚 1。我不确定这是否是您所要求的。
  • 我不确定我是否理解您的建议@Lain,因为 ${properties.anchor_name} 是一个字符串值。
  • @Anuska 简单来说,他说你不需要把$[}

标签: javascript html


【解决方案1】:

感谢所有帮助。看来是由于跨站点脚本预防,我开发的站点无法从 html 执行 JS,但必须使用 TypeScript 构建。

【讨论】:

【解决方案2】:

你试图复制元素,而不是它的值,你必须使用element.value 获取它的值,如果field 变量的值为空,这意味着你试图获取的元素没有' t 与该元素 ID 存在

而且,你试图复制整个元素而不是它的值,所以用这个替换你函数中的第一行:

const field = document.getElementById(properties.anchor_name).value;

此外,您也无需在代码中添加模板文字,因为您也可以这样做!

例如假设有一个变量element_ID,它可以用JS这样写:

var element_ID = "myInput"

现在我想得到那个元素,所以我可以直接这样做:

document.getElementById(element_ID)

而不是这个:

document.getElementById(`${element_ID}`)

【讨论】:

  • 当我按照你的建议进行操作时,我会进入控制台:未捕获的类型错误:无法读取 null 的属性(读取“值”)
  • 我收到Uncaught TypeError: Failed to execute 'getElementById' on 'Document': 1 argument required, but only 0 present.
  • 对不起,这是错误的命令,试试这个document.getElementById(`${properties.anchor_name}`)
  • 没问题。那是我为该字段获取 null 的时候。
  • 这意味着您正在尝试获取无效元素,函数getElementById在找不到元素时返回null,因此请检查您是否正在尝试获取正确的元素
【解决方案3】:

你会得到一个带有这一行的对象:document.getElementById(${properties.anchor_name})。使用参数value,您将从输入字段中获取值。

所以你必须尝试:

const field = document.getElementById(`${properties.anchor_name}`).value;

【讨论】:

  • 当我按照您的建议尝试时,IntelliJ 会为 .value 发出警告“未解析的变量值”
  • @Anuska 这取决于 InteliJ 本身。您可以/** * @param {{some_unres_var:string}} data */ 隐藏该消息。发现于:stackoverflow.com/questions/20835544/…
猜你喜欢
  • 2012-07-24
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 2018-01-26
相关资源
最近更新 更多