Передача строки в функцию прослушивания событий - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь скопировать текст в буфер обмена после нажатия кнопки. В настоящее время это работает, когда у меня есть отдельная функция для копирования различных разделов HTML, которые я хочу скопировать, однако, когда я пишу 1 функцию для обоих с параметром, это не работает.

У меня есть 2 функциикоторые выглядят так:

function copyStringToClipboardA () {
  // Create new element
  var el = document.createElement('input');
  // Set value (string to be copied)
  el.value = document.getElementById("trackEvent").value;
  // Set non-editable to avoid focus and move outside of view
  el.setAttribute('readonly', '');
  el.style = {position: 'absolute', left: '-9999px'};
  document.body.appendChild(el);
  // Select text inside element
  el.select();
  // Copy text to clipboard
  document.execCommand('copy');
  // Remove temporary element
  document.body.removeChild(el);
}

function copyStringToClipboardB() {
  // Create new element
  var el = document.createElement('input');
  // Set value (string to be copied)
  el.value = document.getElementById("identifyEvent").value;
  // Set non-editable to avoid focus and move outside of view
  el.setAttribute('readonly', '');
  el.style = {position: 'absolute', left: '-9999px'};
  document.body.appendChild(el);
  // Select text inside element
  el.select();
  // Copy text to clipboard
  document.execCommand('copy');
  // Remove temporary element
  document.body.removeChild(el);
}

Единственное, что отличается в этих двух функциях, это el.value

. Я вызываю эти две функции нажатием одной кнопки, которая выглядит следующим образом:

document.addEventListener("DOMContentLoaded", function(event){
//Event Examples
    var b = document.getElementById('trackCopy');
    var c = document.getElementById('identifyCopy');

    b.addEventListener('click', copyStringToClipboardA, false);
    c.addEventListener('click', copyStringToClipboardB, false)
});

Я пытаюсь написать 1 функцию, которая принимает строку в качестве параметра вместо записи 2 функций. Я попытался написать следующую функцию, которая принимает строку в качестве параметра:

function copyStringToClipboard(myInput) {
  // Create new element
  var el = document.createElement('input');
  // Set value (string to be copied)
  el.value = document.getElementById(myInput).value;
  // Set non-editable to avoid focus and move outside of view
  el.setAttribute('readonly', '');
  el.style = {position: 'absolute', left: '-9999px'};
  document.body.appendChild(el);
  // Select text inside element
  el.select();
  // Copy text to clipboard
  document.execCommand('copy');
  // Remove temporary element
  document.body.removeChild(el);
}

, а затем вызываю ее по щелчку следующим образом:

document.addEventListener("DOMContentLoaded", function(event){
//Event Examples
    var b = document.getElementById('trackCopy');
    var c = document.getElementById('identifyCopy');

    b.addEventListener('click', copyStringToClipboard("trackEvent"), false);
    c.addEventListener('click', copyStringToClipboard("identifyEvent"), false)    
});

Проблема, с которой я столкнулся в этой реализации:что второй identifyEvent копируется каждый раз.

Я хочу добиться поведения, которое заключается в копировании выделенного текста в буфер обмена.

...