首页 > 解决方案 > setTimeout 并将按钮值复制到剪贴板

问题描述

我有一个按钮,如果可以避免的话,我想在鼠标悬停在它上面一秒钟后将它的值复制到剪贴板,只使用 javascript,而不是 jQuery 。

这段代码有两个问题:

  1. setTimeout 不起作用-警报立即发生而无需等待一秒钟,并且
  2. 我收到“TypeError:null 不是对象(正在评估'document.getElementById(obj).value')”错误

function getButtonValue(obj) {
  document.getElementById(obj).value.execCommand("copy");
  alert("\"" + obj.value + "\" has been copied to the clipboard.");
} // function getid(obj)
<input type="button" id="button2" value="bite me" onmouseover="setTimeout(getButtonValue(this), 1000);" />

标签: javascriptobjectnullsettimeoutexeccommand

解决方案


您正在调用该方法而不是将其分配给 settimeout

这是你将如何做到的

   function getButtonValue(obj) {
obj.focus();
obj.select();
const result = document.execCommand('copy');
if (result === 'unsuccessful' || result == false) {
console.log('Failed to copy text.');
}    
} // function getid(obj)
<input type="button" id="button2" value="bite me" onmouseover="setTimeout(()=> getButtonValue(this), 1000);" />


推荐阅读