2016-11-22 27 views
1

我知道有很多点击复制功能的解决方案,其中一个最流行的似乎是clipboard.js,但我还没有找到一个解决方案,允许您只复制具有特定类的元素。点击将特定课程的所有元素复制到剪贴板中?

例如:

<div class="wrapper"> 
    <div class="copytext">I want to copy this text</div> 
    <div class="nocopytext">I don't want to copy this text</div> 
    <div class="copytext">I also want to copy this text<div> 
</div> 
<button>Copy only classes with copytext</button> 

如何创建我的脚本来选择所有的类“的copytext”,并将其复制到我的剪贴板,但留下了什么事吗?

+0

不知道这是否是可行的。解决方法的想法:1.隐藏所有'nocopytext'元素2.使用clipboard.js复制/剪切3.再次显示元素 –

+0

可能重复[如何在JavaScript中复制到剪贴板?](http:// stackoverflow .com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript) – pistou

+0

@pistou不是真的。 OP在争论中可能会询问更具体的内容。 –

回答

3

使用document.getElementsByClasName()

<div class="wrapper"> 
    <div class="copytext">I want to copy this text</div> 
    <div class="nocopytext">I don't want to copy this text</div> 
    <div class="copytext">I also want to copy this text<div> 
</div> 
<button onclick="copyText()">Copy only classes with copytext</button> 
<div id="output"></div> 
<script> 
function copyText(){ 
    var outputText = ""; 
    var targets = document.getElementsByClassName('copytext'); 
    for(var i = 0; i < targets.length; i++) { 
    outputText += targets[i].innerText; 
    } 
    var output = document.getElementById('output'); 
    output.innerText = outputText; 
    var range = document.createRange(); 
    range.selectNodeContents(output); 
    var selection = window.getSelection(); 
    selection.removeAllRanges(); 
    selection.addRange(range); 
    document.execCommand('copy'); 
    output.style.display = 'none'; 
} 
</script> 
+0

巧妙使用输出盒,谢谢!它效果很好。有一件事,无论如何显示点击时突出显示的文本?就好像你是点击拖动来自己复制它? – cgrouge

+0

其实,我可以隐藏原始包装并显示输出框吗?我尝试将其添加到脚本的底部,并且无法使其工作https://jsfiddle.net/x5s8bhdx/ – cgrouge

+0

在函数的末尾放置了类似setTimeout(function(){output.innerText = ''; output.style.display ='block';},100);还要将样式属性添加到包装显示中:无; –