我试图创建一个复制按钮,将其前一个兄弟元素的文本复制到剪贴板,但没有任何运气。我缺少什么?谢谢!😊
function copy(elem) {
const word = elem.previousSibling.innerText;
word.select();
wordsetSelectionRange(0, 99999)
document.execCommand('copy');
word.remove();
alert(word + " copied.");
}
words:
<div>
<div>
dog
</div><button
id="it" onclick="copy(this)">copy
</button>
</div>
<div>
<div id="word">
cat
</div><button
id="it" onclick="copy(this)">copy
</button>
</div>
你需要的是word 节点,您可以通过引用的 previousSibling
不要取其内容)。然后你可以创建一个范围,跨度从节点的开始到下一个节点的开始,然后把窗口的选区刚好设置在这个范围内,然后你就可以复制选区了。
function copy(elem) {
const wordNode = elem.previousSibling;
const range = document.createRange();
range.setStart(wordNode, 0);
range.setEnd(elem, 0);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
document.execCommand('copy');
}
words:
<div>
<div>
dog
</div><button id="it" onclick="copy(this)">copy
</button>
</div>
<div>
<div id="word">
cat
</div><button id="it" onclick="copy(this)">copy
</button>
</div>