【问题标题】:How to copy text from a paragraph elements from JavaScript?如何从 JavaScript 的段落元素中复制文本?
【发布时间】:2021-04-15 13:48:09
【问题描述】:

您好,我是一名新开发人员,正在尝试建立一个网站。网站的主要目标是向访问者提供一段文本。我的一些助手给了我一个 javascript 来复制 <p></p> 元素中的文本。但它不起作用。单击按钮时不会复制<p></p> 中的文本。不知何故,如果您知道答案,请使用我的常量、可验证和其他值。 我的 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>

请优化代码,以便在单击相应按钮时复制&lt;p&gt;&lt;/p&gt;元素内的文本。

另外任何人都可以修改上面的代码,这样我就不需要为&lt;p&gt;&lt;/p&gt;重复上课了。(可选)

【问题讨论】:

  • 当你说“不工作”时,问题是什么?有错误吗?没有找到元素吗?
  • 当按钮被点击时,段落内的文本不会被复制。

标签: javascript html scripting dynamic-html


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-13
      • 1970-01-01
      • 2015-02-03
      • 2023-02-09
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      相关资源
      最近更新 更多