javascript - setTimeout 并将按钮值复制到剪贴板
问题描述
我有一个按钮,如果可以避免的话,我想在鼠标悬停在它上面一秒钟后将它的值复制到剪贴板,只使用 javascript,而不是 jQuery 。
这段代码有两个问题:
- setTimeout 不起作用-警报立即发生而无需等待一秒钟,并且
- 我收到“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);" />
解决方案
您正在调用该方法而不是将其分配给 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);" />
推荐阅读
- ubuntu - ns2:在ns2中安装aodv
- haskell - Haskell用元组构造两个关系
- flutter - 使用flutter bloc的flutter_bloc库递增递减按钮
- c# - 为什么照片没有显示在 ASP.NET Web 应用程序中
- wordpress - Onesignal Wordpress Flutter 未在应用程序中打开
- javascript - 无法访问属性“color”,icon.style 未定义
- typescript - 在 dist 文件中,为什么一个正常的 - 显然 - 预期的分号会引发“SyntaxError: Unexpected token ;” 错误?
- laravel - Laravel Cashier 未完成支付处理
- javascript - React-player 如何使用自动播放处理播放暂停状态
- c++ - CMake 不链接目标文件