如何从 JavaScript 的段落元素中复制文本?

How to copy text from a paragraph elements from JavaScript?

您好,我是一名新开发人员,正在尝试建立一个网站。网站的主要目标是向访问者提供一段文字。我的一些助手给了我一个 javascript 来复制 <p></p> 元素中的文本。但它不起作用。当按钮为clicked.Somehow时,<p></p>内的文本不会被复制。如果你知道答案,请使用我的常数、veriable和其他值。 我的 Javascript

 var buttons = document.getElementsByClassName('copystatus');

for (let button of buttons) {
  button.addEventListener('click', function() {
     let statusElement = this.closest('.latestatus');
     let textToCopy = statusElement.getElementsByClassName('copytxt')[0].innerHTML;
    
    copyTextToClipboard(textToCopy);
    addCopyStatusAlert(this.parentNode);
  });
}

function copyTextToClipboard(text) {
  const copyText = document.createElement('textarea');
  copyText.style.position="absolute";
  copyText.style.display="none";
  copyText.value = text;

  document.body.appendChild(copyText);
  copyText.select();
  document.execCommand('copy');
  document.body.removeChild(copyText);
}

function addCopyStatusAlert(element) {
  if (!element.getElementsByClassName('status-copy-alert').length) {
    let copyAlertElement = document.createElement('span');
    copyAlertElement.classList.add('status-copy-alert')
    let copyMessage = document.createTextNode('Copied!');
    copyAlertElement.appendChild(copyMessage);

    element.appendChild(copyAlertElement);
    setTimeout(function() {
      element.removeChild(copyAlertElement);
    }, 700);
  }
}

我的Html

<div class="mainStatus">
   <h2 class="statusHeading">Latest English Status</h2>
   <div class="allStatus">
    <div class="bock">
     <div class="latestatus">
      <p class="copytxt">Life is good when you have books</p>
      <div>
       <button class="copystatus btn">Copy</button>
      </div>
     </div>
     <div class="latestatus">
      <p class="copytxt">Google is an open source library by Larry Page and Sergey Brin!</p>
      <div>
       <button class="copystatus btn">Copy</button>
      </div>
     </div>
    </div>
    <div class="block">
     <div class="latestatus">
      <p class="copytxt">Cats are better than dogs.</p>
      <div>
       <button class="copystatus btn">Copy</button>
      </div>
     </div>
     <div class="latestatus">
      <p class="copytxt">Cats are better than dogs.</p>
      <div>
       <button class="copystatus btn">Copy</button>
      </div>
     </div>
    </div>
   </div>
  </div>

请优化代码,以便它可以在单击相应按钮时复制 <p></p> 元素内的文本。

此外,任何人都可以修改上面的代码,这样我就不需要为 <p></p> 重复提供 class。(可选)

您需要将文本绘制到屏幕上以便可以选择它,请尝试删除 copyText.style.display="none";,或用其他方法替换它,例如:

copyText.style.left="-99999px";
copyText.style.zIndex="99999";

是的,我们应该删除 copyText.style.display = "none" 那么代码将 运行 完美。 扎克的回答 谢谢