将以前的兄弟姐妹复制到剪贴板

问题描述 投票:0回答:1

我试图创建一个复制按钮,将其前一个兄弟元素的文本复制到剪贴板,但没有任何运气。我缺少什么?谢谢!😊

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>
javascript copy clipboard copy-paste word
1个回答
0
投票

你需要的是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>
© www.soinside.com 2019 - 2024. All rights reserved.