配列VanillaJSで「this」要素を見つける方法

jon.c

私が持っているのは

<div>
 <div onclick="find(this)" class="grey">1</div>
 <div onclick="find(this)" class="grey">2</div>
 <div onclick="find(this)" class="grey">3</div>
 <div onclick="find(this)" class="grey">4</div>
 <div onclick="find(this)" class="grey">5</div>
</div>

私がやりたいのは、<div>(例<div>...3</div>:)をクリックして、div 3のクラスを置き換え、前の兄弟の「赤」と次の兄弟の「灰色」をすべて置き換えることです。

私がうまくいくと思ったのは、親要素に到達するまで逆方向にループすることです。

私が試していること。

function find(ele) {
 var active = ele;
 var previous = active.previousElementSibling;
 var next = active.nextElementSibling;
 var list = [];  // Trying to find a way to push all previous siblings of active into this array
 var i = 0;
 while (i < list){
  next.classList.replace('grey')
  previous.classList.replace('red');
  i++
 }
}

関数を完成させるための知識が不十分なため、助けが必要な未定義のものがいくつかありますが、熟考した後、関数が呼び出されるたびに前の兄弟が灰色に戻るため、この関数は機能しない可能性があります。

それで、これを機能させる方法はありますか?

リスト配列内の要素のみがクラスを赤に置き換え、配列内にない要素は灰色に置き換えます。

あなたの助けに感謝します、あなたが助けてくれた人に本当に感謝します。

特定のパフォーマンス

div最初にすべてのターゲットを配列に入れますクリックすると、配列内でクリックされた要素のインデックスを。で見つけますindexOf次に、.sliceインデックス0からクリックされたインデックスまでの配列を作成し、そのスライス内のすべての要素をred-に設定します.slice。ただし、今回はクリックされたインデックスから開始し、そのスライスのすべての要素を次のように設定ますgrey

const greys = [...document.querySelectorAll('.grey')];

function find(ele) {
  const index = greys.indexOf(ele);
  greys.slice(0, index + 1).forEach((prevElm) => {
    prevElm.className = 'red';
  });
  greys.slice(index + 1).forEach((nextElm) => {
    nextElm.className = 'grey';
  });
}
.red {
  background-color: red;
}
.grey {
  background-color: yellow;
}
<div>
  <div onclick="find(this)" class="grey">1</div>
  <div onclick="find(this)" class="grey">2</div>
  <div onclick="find(this)" class="grey">3</div>
  <div onclick="find(this)" class="grey">4</div>
  <div onclick="find(this)" class="grey">5</div>
</div>

また、インラインハンドラーの動作非常に奇妙であり、可能な限り避ける必要があることにも注意してください代わりに、Javascriptを使用してリスナーを適切にアタッチすることを検討してください。

const greys = [...document.querySelectorAll('.grey')];
greys.forEach((elm) => {
  elm.addEventListener('click', () => find(elm));
});

function find(ele) {
  const index = greys.indexOf(ele);
  greys.slice(0, index + 1).forEach((prevElm) => {
    prevElm.className = 'red';
  });
  greys.slice(index + 1).forEach((nextElm) => {
    nextElm.className = 'grey';
  });
}
.red {
  background-color: red;
}
.grey {
  background-color: yellow;
}
<div>
  <div class="grey">1</div>
  <div class="grey">2</div>
  <div class="grey">3</div>
  <div class="grey">4</div>
  <div class="grey">5</div>
</div>

代わりにイベント委任を使用することもできるため、5つの個別のリスナーではなく、1つのリスナーをアタッチするだけで済みます。

const greys = [...document.querySelectorAll('.grey')];
const container = document.querySelector('div');
container.addEventListener('click', ({ target }) => {
  if (target.parentElement === container) {
    find(target);
  }
});

function find(ele) {
  const index = greys.indexOf(ele);
  greys.slice(0, index + 1).forEach((prevElm) => {
    prevElm.className = 'red';
  });
  greys.slice(index + 1).forEach((nextElm) => {
    nextElm.className = 'grey';
  });
}
.red {
  background-color: red;
}
.grey {
  background-color: yellow;
}
<div>
  <div class="grey">1</div>
  <div class="grey">2</div>
  <div class="grey">3</div>
  <div class="grey">4</div>
  <div class="grey">5</div>
</div>

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

2 つの配列で共通の要素を見つける方法は?

分類Dev

配列要素ですでに値を見つける方法

分類Dev

異なる配列で同じ要素を見つける方法Swift

分類Dev

要素の位置を見つける方法はnumpy配列です

分類Dev

Pythonで配列内の要素の位置を見つける方法は?

分類Dev

効率的な方法で配列の要素を見つける

分類Dev

javascript配列で等しい要素の数を見つける方法

分類Dev

Mongoose で配列要素を見つける方法は?

分類Dev

配列bで[i]番目の要素を見つける方法

分類Dev

javascriptで配列の中央の要素を見つける方法は?

分類Dev

Pythonで2つの要素を持つ配列の平均を見つける方法は?

分類Dev

jqueryで2つの配列間でのみ共通要素を見つける方法

分類Dev

別の大きな配列(6億要素)で大きな(100万要素)配列の要素を見つける方法

分類Dev

与えられた数の合計である配列要素を見つける方法

分類Dev

配列から要素を見つける

分類Dev

Purescriptでレコードの配列から要素を見つける方法

分類Dev

この種の配列で要素の最大値を見つける方法は?

分類Dev

string(char配列)で要素を見つけて2倍にする方法は?

分類Dev

Ruby言語で配列内の同一要素の数を見つける方法

分類Dev

2つの配列で共通の要素を見つける

分類Dev

配列内の連続する要素を見つける方法

分類Dev

配列内の交差する要素を見つける方法

分類Dev

配列の要素数を見つける方法は?

分類Dev

任意のJavaScript配列の要素の合計を見つける方法

分類Dev

配列要素のインデックスを見つける方法

分類Dev

配列内の要素を見つける方法

分類Dev

NumPy配列の要素係数を見つける方法

分類Dev

Javascript配列で重複する要素を見つける

分類Dev

配列C ++で最も出現する要素を見つける

Related 関連記事

  1. 1

    2 つの配列で共通の要素を見つける方法は?

  2. 2

    配列要素ですでに値を見つける方法

  3. 3

    異なる配列で同じ要素を見つける方法Swift

  4. 4

    要素の位置を見つける方法はnumpy配列です

  5. 5

    Pythonで配列内の要素の位置を見つける方法は?

  6. 6

    効率的な方法で配列の要素を見つける

  7. 7

    javascript配列で等しい要素の数を見つける方法

  8. 8

    Mongoose で配列要素を見つける方法は?

  9. 9

    配列bで[i]番目の要素を見つける方法

  10. 10

    javascriptで配列の中央の要素を見つける方法は?

  11. 11

    Pythonで2つの要素を持つ配列の平均を見つける方法は?

  12. 12

    jqueryで2つの配列間でのみ共通要素を見つける方法

  13. 13

    別の大きな配列(6億要素)で大きな(100万要素)配列の要素を見つける方法

  14. 14

    与えられた数の合計である配列要素を見つける方法

  15. 15

    配列から要素を見つける

  16. 16

    Purescriptでレコードの配列から要素を見つける方法

  17. 17

    この種の配列で要素の最大値を見つける方法は?

  18. 18

    string(char配列)で要素を見つけて2倍にする方法は?

  19. 19

    Ruby言語で配列内の同一要素の数を見つける方法

  20. 20

    2つの配列で共通の要素を見つける

  21. 21

    配列内の連続する要素を見つける方法

  22. 22

    配列内の交差する要素を見つける方法

  23. 23

    配列の要素数を見つける方法は?

  24. 24

    任意のJavaScript配列の要素の合計を見つける方法

  25. 25

    配列要素のインデックスを見つける方法

  26. 26

    配列内の要素を見つける方法

  27. 27

    NumPy配列の要素係数を見つける方法

  28. 28

    Javascript配列で重複する要素を見つける

  29. 29

    配列C ++で最も出現する要素を見つける

ホットタグ

アーカイブ