使用 JS 将多个元素的 innerText 复制到剪贴板
Copy innerText of multiple element to Clipboard, using JS
我有下面的 HTML
代码,我想使用 Javascript 将每个 p 元素的 innerText 复制到剪贴板。 innerText值是动态随机生成的。
<div class="colour-palette-showcase">
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
</div>
我已将 .colour-value-text
存储到一个变量,运行 和 forEach
并将其存储到一个新变量。但是当我然后尝试 document.execCommand('copy')
时,它会循环并只复制最后一个。
我猜我需要将所有值存储到一个数组中,然后将其复制到剪贴板。还是我做错了?
非常感谢任何帮助。这是我第一次尝试一个小的 JS 项目。
谢谢
是这样的吗?
const range = document.createRange();
range.selectNode(document.getElementById("example"));
window.getSelection().addRange(range);
document.execCommand("copy");
ofc 你可以使用 document.getElementsByClassName("example");
这是一个代码示例,它将所有 <p>
的 innerHTML 复制到一个数组,然后从该数组复制到一个临时 textarea
,从那里将完整的值复制到您的剪贴板:
document.getElementById('copy-button').onclick = function() {
let values = [];
document.querySelectorAll('.colour-value-text').forEach( (p) => values.push( p.innerHTML ) );
let text = document.createElement('textarea');
document.body.appendChild(text);
text.value = values.join(', ');
text.select();
document.execCommand('copy');
text.parentNode.removeChild(text);
}
<div class="colour-palette-showcase">
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">1</p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">2</p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">3</p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">4</p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">5</p>
</div>
</div>
<button id="copy-button" type="button">copy</button>
已复制到剪贴板:
1, 2, 3, 4, 5
我有下面的 HTML
代码,我想使用 Javascript 将每个 p 元素的 innerText 复制到剪贴板。 innerText值是动态随机生成的。
<div class="colour-palette-showcase">
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text"></p>
</div>
</div>
我已将 .colour-value-text
存储到一个变量,运行 和 forEach
并将其存储到一个新变量。但是当我然后尝试 document.execCommand('copy')
时,它会循环并只复制最后一个。
我猜我需要将所有值存储到一个数组中,然后将其复制到剪贴板。还是我做错了?
非常感谢任何帮助。这是我第一次尝试一个小的 JS 项目。
谢谢
是这样的吗?
const range = document.createRange();
range.selectNode(document.getElementById("example"));
window.getSelection().addRange(range);
document.execCommand("copy");
ofc 你可以使用 document.getElementsByClassName("example");
这是一个代码示例,它将所有 <p>
的 innerHTML 复制到一个数组,然后从该数组复制到一个临时 textarea
,从那里将完整的值复制到您的剪贴板:
document.getElementById('copy-button').onclick = function() {
let values = [];
document.querySelectorAll('.colour-value-text').forEach( (p) => values.push( p.innerHTML ) );
let text = document.createElement('textarea');
document.body.appendChild(text);
text.value = values.join(', ');
text.select();
document.execCommand('copy');
text.parentNode.removeChild(text);
}
<div class="colour-palette-showcase">
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">1</p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">2</p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">3</p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">4</p>
</div>
<div class="colour-value">
<div class="colour"></div>
<p class="colour-value-text">5</p>
</div>
</div>
<button id="copy-button" type="button">copy</button>
已复制到剪贴板:
1, 2, 3, 4, 5