javascript - 如何让我的文案JS监听多个按钮?

标签 javascript php

如何让 JS 为多个复制按钮工作?例如,想象一个页面提要中的 5 个帖子,每个帖子都有自己的复制按钮。现在它似乎只对页面中的第一个按钮有效,其他按钮什么都不做。

HTML/PHP:

<input type="text" value="<?php the_permalink();?>" id="myInput">

<div class="copytooltip">
<button onclick="myFunction()" onmouseout="outFunc()">
  <span class="copytooltiptext" id="myCopyTooltip">Copy to clipboard</span>
  Copy text
  </button>
</div>

JS:

function myFunction() {
  var copyText = document.getElementById("myInput");
  copyText.select();
  copyText.setSelectionRange(0, 99999);
  document.execCommand("copy");
  
  var tooltip = document.getElementById("myCopyTooltip");
  tooltip.innerHTML = "Copied: " + copyText.value;
}

function outFunc() {
  var tooltip = document.getElementById("myCopyTooltip");
  tooltip.innerHTML = "Copy to clipboard";
}

最佳答案

使用动态 ID 是可行的方法,但还有另一种更复杂的选择。 它涉及使用事件对象。您应该将输入字段和按钮放在同一个父元素下。然后您可以根据事件的目标元素遍历 DOM,为您的按钮和输入字段找到共同的父级,然后在共同父级的子节点中找到输入字段。 沿着这些线的东西:

function myFunction(event) {
  const commonParent = event.currentTarget.parentElement;
  let inputElement = null;
  for (node of commonParent.childNodes) {
    if(node instanceof HTMLInputElement) {
        inputElement = node;
      break;
    } 
  }
 
  inputElement.select();
  inputElement.setSelectionRange(0, 99999);
  document.execCommand("copy");
  
  event.currentTarget.innerText = `Copied: ${inputElement.value}`;
}

function outFunc(event) {
    event.currentTarget.innerText = "Copy to clipboard";
}
<div class="post-wrapper">
  <input type="text" value="Value 1" id="myInput">
  <br>
  <button onclick="myFunction(event)" onmouseout="outFunc(event)">
    Copy to clipboard
  </button>
</div>

<div class="post-wrapper">
  <input type="text" value="Value 2" id="myInput">
  <br>
  <button onclick="myFunction(event)" onmouseout="outFunc(event)">
    Copy to clipboard
  </button>
</div>

关于javascript - 如何让我的文案JS监听多个按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65712235/

相关文章:

javascript - 如何防止在 mousemove 函数中弹出多个警报、确认或提示?

javascript - 如何为包括视频/div/iframe 在内的所有元素翻转 X?

javascript - jQuery 分页下一页和上一页按钮在达到零或过去最后一页后失败

javascript - 如何将方括号对象键从 URL 位置转换为 Javascript 中的嵌套对象?

php - 如何访问 Laravel 集合对象中的第 n 个对象?

php - 如何使用php获取存储在Mysql中的多张图片?

javascript - <paper-input> 或 <core-input> 元素上的 polymer focus()

php - 如何将未知数量的php数组值相互相乘?

php - 用php创建查询

php - 如何用 php/html 偏移图像?