1. ホーム
  2. javascript

[解決済み] JavaScriptの変数の出力をクリップボードにコピーする

2023-01-09 02:07:42

質問

私はJavaScriptの知識がありませんが、私は様々なStack Overflowの回答から断片を使用して、このコードをまとめることができました。それは問題なく動作し、アラートボックスを介して文書内のすべての選択されたチェックボックスの配列を出力します。

function getSelectedCheckboxes(chkboxName) {
  var checkbx = [];
  var chkboxes = document.getElementsByName(chkboxName);
  var nr_chkboxes = chkboxes.length;
  for(var i=0; i<nr_chkboxes; i++) {
    if(chkboxes[i].type == 'checkbox' && chkboxes[i].checked == true) checkbx.push(chkboxes[i].value);
  }
  return checkbx;
}

そして、それを呼び出すために私は使用します。

<button id="btn_test" type="button" >Check</button>
<script>
    document.getElementById('btn_test').onclick = function() {
        var checkedBoxes = getSelectedCheckboxes("my_id");
        alert(checkedBoxes);
    }
</script>

今度は、これを修正して btn_test ボタンをクリックすると、出力配列 checkbx がクリップボードにコピーされます。追加してみました。

checkbx = document.execCommand("copy");

または

checkbx.execCommand("copy");

のように関数の末尾に記述し、それを呼び出す。

<button id="btn_test" type="button" onclick="getSelectedCheckboxes('my_id')">Check</button>

しかし、うまくいきません。クリップボードにデータがコピーされません。

どうすれば解決しますか?

OK]を、私はいくつかの時間を見つけて、によって提案に従った。 Teemu の提案に従って、まさに私が望んでいたものを手に入れることができました。

ここに最終的なコードがあります。明確にするために、このコードは特定のIDのチェックされたチェックボックスをすべて取得し、配列に出力します。 checkbx という名前の配列に出力し、それらの固有名をクリップボードにコピーしています。

JavaScriptの関数です。

function getSelectedCheckboxes(chkboxName) {
  var checkbx = [];
  var chkboxes = document.getElementsByName(chkboxName);
  var nr_chkboxes = chkboxes.length;
  for(var i=0; i<nr_chkboxes; i++) {
    if(chkboxes[i].type == 'checkbox' && chkboxes[i].checked == true) checkbx.push(chkboxes[i].value);
  }
  checkbx.toString();

  // Create a dummy input to copy the string array inside it
  var dummy = document.createElement("input");

  // Add it to the document
  document.body.appendChild(dummy);

  // Set its ID
  dummy.setAttribute("id", "dummy_id");

  // Output the array into it
  document.getElementById("dummy_id").value=checkbx;

  // Select it
  dummy.select();

  // Copy its contents
  document.execCommand("copy");

  // Remove it as its not needed anymore
  document.body.removeChild(dummy);
}

そしてそのHTMLの呼び出し。

<button id="btn_test" type="button" onclick="getSelectedCheckboxes('ID_of_chkbxs_selected')">Copy</button>