クリック時に複数の変数を配列に記録する

サイココーダー

ボタンのメニューがあり、どのボタンが選択されているかを記録しようとしています。複数のボタンを同時に選択できます。現在、個々のボタンの選択を個々の配列に記録することしかできませんが、すべての変数を1つの配列に配置するために、どのボタンが選択されているかをループしようとしています。

これらのボタンが選択されている場合は、["A"、 "C"、 "D"]のような配列になりたいと思います。ユーザーが完了ボタンを押したときに配列を記録したいと思います。

私が間違っていることについて誰かがアドバイスを持っていますか?よろしくお願いします!

<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <style media="screen">
    .buttons {
      width: 150px;
      height: 50px;
      border: solid 2px black;
      text-align: center;
      color: black;
      cursor: pointer;
      background-color: white;
      margin: 2px;
    }

    #buttonGallery {
      margin: 10px;
      padding: 10px;
      border: solid 2px black;
      width: 155px;
    }

    #done {
      width: 150px;
      height: 50px;
      border: solid 2px black;
      text-align: center;
      color: black;
      cursor: pointer;
      background-color: white;
      margin: 2px;
    }
  </style>
</head>

<body>
    <div id="buttonGallery">
      <div id="done">
        <p>done</p>
      </div>
    </div>
    <script type="text/javascript">
      let $buttonGallery = $("#buttonGallery");
      let myList = ["A", "B", "C", "D"];
      let myColors = ["red", "green", "blue", "red"];

      myList.map(function(letter, index) {
        let $button = $("<div></div>")
          .addClass("buttons")
          .attr("id", "button_" + letter)
          .html("<p>" + letter + "</p>")
          .on("mouseenter", function() {
            $(this).css("background", myColors[index]);
          })
          .on("mouseleave", function() {
            if (!$(this).hasClass('selected')) {
              $(this).css("background", "transparent");
            }
          })
          .on("click", function() {
            $(this).css("background", myColors[index]);
            $(this).addClass('selected');

            let clicked = [];
            let syms = document.querySelectorAll('.selected');
            console.log(syms);

            for (let n = 0; n < syms.length; n++) {
              clicked = [];

              if (!clicked.includes(syms[n].textContent)) {
                clicked.push(syms[n].textContent);
                console.log(syms[n].textContent);
              }
              console.log('click', clicked);
            };

          })
        $("#done").before($button);
      });

      $("#done").on("click", clearColor);

      function clearColor() {

        $(".buttons").css({
          backgroundColor: 'transparent'
        });
        $(".buttons").removeClass('selected');
      }
    </script>
  </body>
  </script>
</html>

SLePort

clickedコメントで提案されているようにグローバルに設定する必要があり、spread演算子を使用して配列を重複排除できます。

let $buttonGallery = $("#buttonGallery");
let myList = ["A", "B", "C", "D"];
let myColors = ["red", "green", "blue", "red"];
let clicked = [];

myList.map(function(letter, index) {
  let $button = $("<div></div>")
    .addClass("buttons")
    .attr("id", "button_" + letter)
    .html("<p>" + letter + "</p>")
    .on("mouseenter", function() {
      $(this).css("background", myColors[index]);
    })
    .on("mouseleave", function() {
      if (!$(this).hasClass('selected')) {
        $(this).css("background", "transparent");
      }
    })
    .on("click", function() {
      $(this).css("background", myColors[index]);
      $(this).addClass('selected');

      let syms = document.querySelectorAll('.selected');
      let selected = [...syms].map(el => el.textContent)
      console.log("selected", selected);

    })
  $("#done").before($button);
});

$("#done").on("click", clearColor);

function clearColor() {

  $(".buttons").css({
    backgroundColor: 'transparent'
  });
  $(".buttons").removeClass('selected');
}
.buttons {
  width: 150px;
  height: 50px;
  border: solid 2px black;
  text-align: center;
  color: black;
  cursor: pointer;
  background-color: white;
  margin: 2px;
}

#buttonGallery {
  margin: 10px;
  padding: 10px;
  border: solid 2px black;
  width: 155px;
}

#done {
  width: 150px;
  height: 50px;
  border: solid 2px black;
  text-align: center;
  color: black;
  cursor: pointer;
  background-color: white;
  margin: 2px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="buttonGallery">
  <div id="done">
    <p>done</p>
  </div>
</div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

クリック時に複数の要素を変更するjquery

分類Dev

Java スクリプト: 複数の json 配列変数を説明的な表記で一度に更新する

分類Dev

データ入力時間の記録:マクロを変更して、複数の列で有効になるようにします

分類Dev

クリック時に複数の要素の色を変更するjQuery

分類Dev

クリック時にさまざまな変数を選択するように配列を設定する

分類Dev

複数のチェックボックス値を変数または配列に格納する

分類Dev

クリック時に複数の条件で配列をフィルタリングする(チェックボックス要素)

分類Dev

複数の配列リストを配列に変換する

分類Dev

フォーマットされた配列のようにモノログで複数行のエントリをログに記録する方法は?

分類Dev

1 つのクエリで複数の選択をアクティブに記録する

分類Dev

Python:複数の文字列を1行に記録する

分類Dev

複数の配列要素を同時に変更するjavascript

分類Dev

迅速に配列を参照するためのジェネリック変数

分類Dev

Kubernetesに複数のカスタムメトリックAPIを登録する

分類Dev

Windowsの環境変数へのアクセスをログに記録する

分類Dev

Goで複数の配列にわたって変数をチェックインする方法

分類Dev

クリック時に液体変数を変更する

分類Dev

変数を配列にプッシュし、クリックするたびに配列を更新しますか?

分類Dev

流星のクリック時に変数の値を変更する方法

分類Dev

複数の色でクリック時にラジオボタンの色を変更する

分類Dev

Pandas DataFrameの列を複数の変数にアンパックする方法

分類Dev

Rの複数の変数に対して列をチェックする方法

分類Dev

要素の配列に対する複数のクエリの更新

分類Dev

チェック時にテーブルから複数の配列項目を挿入する

分類Dev

cmdで複数のクエリを実行してログに記録するバッチファイルを作成する方法

分類Dev

方法:複数のロボコピーをログに記録するバッチスクリプトを取得する

分類Dev

複数の配列を1つのリストボックスに入れる

分類Dev

シンボリック変数を配列に変換するMatlab

分類Dev

複数のifステートメントを使用せずに、複数の配列からブール値を同時にチェックする

Related 関連記事

  1. 1

    クリック時に複数の要素を変更するjquery

  2. 2

    Java スクリプト: 複数の json 配列変数を説明的な表記で一度に更新する

  3. 3

    データ入力時間の記録:マクロを変更して、複数の列で有効になるようにします

  4. 4

    クリック時に複数の要素の色を変更するjQuery

  5. 5

    クリック時にさまざまな変数を選択するように配列を設定する

  6. 6

    複数のチェックボックス値を変数または配列に格納する

  7. 7

    クリック時に複数の条件で配列をフィルタリングする(チェックボックス要素)

  8. 8

    複数の配列リストを配列に変換する

  9. 9

    フォーマットされた配列のようにモノログで複数行のエントリをログに記録する方法は?

  10. 10

    1 つのクエリで複数の選択をアクティブに記録する

  11. 11

    Python:複数の文字列を1行に記録する

  12. 12

    複数の配列要素を同時に変更するjavascript

  13. 13

    迅速に配列を参照するためのジェネリック変数

  14. 14

    Kubernetesに複数のカスタムメトリックAPIを登録する

  15. 15

    Windowsの環境変数へのアクセスをログに記録する

  16. 16

    Goで複数の配列にわたって変数をチェックインする方法

  17. 17

    クリック時に液体変数を変更する

  18. 18

    変数を配列にプッシュし、クリックするたびに配列を更新しますか?

  19. 19

    流星のクリック時に変数の値を変更する方法

  20. 20

    複数の色でクリック時にラジオボタンの色を変更する

  21. 21

    Pandas DataFrameの列を複数の変数にアンパックする方法

  22. 22

    Rの複数の変数に対して列をチェックする方法

  23. 23

    要素の配列に対する複数のクエリの更新

  24. 24

    チェック時にテーブルから複数の配列項目を挿入する

  25. 25

    cmdで複数のクエリを実行してログに記録するバッチファイルを作成する方法

  26. 26

    方法:複数のロボコピーをログに記録するバッチスクリプトを取得する

  27. 27

    複数の配列を1つのリストボックスに入れる

  28. 28

    シンボリック変数を配列に変換するMatlab

  29. 29

    複数のifステートメントを使用せずに、複数の配列からブール値を同時にチェックする

ホットタグ

アーカイブ