如何将var复制到剪贴板

时间:2019-03-15 07:23:18

标签: javascript jquery

如何将var复制到剪贴板? 它总是返回:未捕获的TypeError:copyText.select不是函数

function copy() {
     var allDesCode2 = document.getElementsByClassName("desCode2");
     var copyText = "ABC";
     for(var i=0; i<allDesCode2.length; i++){
         copyText += allDesCode2[i].innerHTML;
     }
     copyText.select();
     document.execCommand("copy"); 
}

4 个答案:

答案 0 :(得分:2)

copy()函数可帮助从变量复制字符串,您可以在纯JavaScript 中使用此方法,而无需任何库的帮助,例如jQuery

function copy() {

    var copyText = "Hooray ! I will be copied";
    var el = document.createElement('textarea');
    el.value = copyText;
    el.setAttribute('readonly', '');
    el.style = {
        position: 'absolute',
        left: '-9999px'
    };
    document.body.appendChild(el);
    el.select();
    document.execCommand('copy');
    document.body.removeChild(el);

}
<button onclick="copy()">Copy</button>

答案 1 :(得分:1)

您只是尝试选择没有任何输入错误的文本。另外,我只是读取复制事件必须在click事件内部(也许复制REFERENCE还有更多事件)

我在div上附加了复制功能,并将其html输入,然后将其复制

function copy() {
  var allDesCode2 = document.getElementsByClassName("desCode2");
  var copyText = "ABC";
  for (var i = 0; i < allDesCode2.length; i++) {
    copyText += allDesCode2[i].innerHTML;
  }
  $('input').val(copyText).select();
  document.execCommand('copy');
}
$('.desCode2').on('click',copy);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="desCode2">123123123123</div>
<input>

答案 2 :(得分:0)

function copyToClipboard(text) {
    var fallbackHandler = responseFunction => {
        var cheat = document.createElement('textarea');
        cheat.value = text;
        cheat.select();
        if (document.execCommand('copy')) {
            cheat.remove();
            responseFunction(true);
        }
        responseFunction(false);
    };
    var promiseHandler = res => {
        if (!navigator || !navigator.clipboard || typeof navigator.clipboard.writeText !== 'function') {
            fallbackHandler(res);
            return;
        }
        navigator.clipboard.writeText(text)
            .then(() => res(true), () => fallbackHandler(res));
    };
    return new Promise(promiseHandler, reject => reject(new Error('some Error')));
}

var allDesCode2 = document.getElementsByClassName("desCode2");
var copyText = ["ABC"];
for (var i = 0, e; e = allDesCode2[i]; i++) {
   copyText.push(e.innerHTML);
}
copyToClipboard(copyText.join('')).then(b => {
    if (!b) { 
        alert('Copy to Clipboard failed'); 
    }
});

答案 3 :(得分:-1)

我假设您使用this article作为参考。但是在此示例中,.select()元素上使用了<input>,并且您试图在变量上执行此方法。

您可以查看this question(您的问题可能是这个问题的重复),它提供了许多有用的答案,将会为您提供帮助。