「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript - Shift キーを押しながら複数のチェックボックスをオンにします。

JavaScript - Shift キーを押しながら複数のチェックボックスをオンにします。

2024 年 7 月 30 日に公開
ブラウズ:314

ということで、Wes Bos の JavaScript30 からのまたしても難しい課題を乗り越えて戻ってきました!今日の課題は、私が最初に想定していたよりもはるかに多くの作業でした。 Shift キーを押しながら複数のボックスをチェックするのは非常に一般的な方法ですが、それが Web サイトに自動的に組み込まれておらず、自分で手動でコーディングする必要があることを知って驚きました。 もしそうであれば、このレッスンは存在しないことは明らかですが、私が言いたいことはわかります。

完全に透明性を持ったので、私はあきらめて、このレッスンについてウェスの説明に従いました。 ビデオは、彼が私たちに統治を引き受けて自分たちで解決するよう激励するところから始まりました。 1 時間半以上グーグル検索をして、実際の進歩を試みた後、私はあきらめて、このレッスンに従いました。 これを諦めたことを誇りに思うわけではありませんが、間違いなく無関係な情報のウサギの穴に落ちていたので、今週いつになっても実際の解決策を思いつくことはできなかったでしょう。 そうそう...私は頭を下げてウェスについていきました。

screen shot of the checklist

このレッスンは非常に一目瞭然です。 基本的なチェックリストが与えられ、Shift キーを押しながらボックスをチェックすることで複数のボックスをチェックできるようにするよう求められます。 いいね。 これは私が思っていたよりもはるかに複雑であることが判明しました。 実際のレッスンに入る前に、そして私たち側で必要なことを説明する前に、注意しておきたいことが 1 つあります。

    input:checked   p {
      background: #F9F9F9;
      text-decoration: line-through;
    }

この非常にシンプルな CSS 行が私にとってクールでした。 を使用して HTML でチェックボックスを作成できることは知っていましたが、ボックスにチェックを入れるだけで CSS を使用してチェックボックス/チェックボックスが含まれる div のプロパティを変更できるとは知りませんでした。 また、ここで注意したいのは、ウェスが「チェック」という単語をどのくらいの頻度で言ったかについても言及したことです。なぜなら、それはビデオの中でたくさん出てきたからです...この投稿でも同様に多く出てくることを警告します。

  let log = document.querySelector('#log');
  document.addEventListener("click", logKey)
  function logKey(e) {
    console.log(`The shift key is pressed: ${e.shiftKey}`);}

function validate() {
  if (document.getElementsByClassName('item').checked) {
    alert('checked');
  } else { alert('you didnt check it!')} }
validate()  
  let checkBoxes = document.querySelectorAll('checkbox');
  let selected = [];
  for (let i=0; i 



この行より上のコード ブロックはすべて失敗でした。 これらは、私が自分で解決策を見つけようとした試みのほんの一部です。 何度か、自分が正しい道を進んでいるように感じました。 たとえば、関数 logKey(e) を含む最初の部分では、クリック中に Shift キーが押されたときと押されていないときに呼び出す方法を見つけられたことにとても誇りに思いました。 その後は…どうやって進めばいいのか全く分かりませんでした。 またまた行き詰まってしまいました。

const checkboxes = document.querySelectorAll('.inbox input[type="checkbox"]')
let lastChecked

function handleCheck(e) {
  let inBetween = false
if (e.shiftKey && this.checked){
  checkboxes.forEach (checkbox => {
    console.log(checkbox)
    if (checkbox === this || checkbox === lastChecked) {
      inBetween =!inBetween;
    }
    if(inBetween) {
      checkbox.checked = true
    }
  })
}
  lastChecked = this;
}
checkboxes.forEach(checkbox => checkbox.addEventListener('click', handleCheck));

ウェスはこれで危機を救うためにここに来ました。 同氏は、HTML 内で親/子を呼び出すことで複数のボックスをチェックできると述べましたが、これは HTML に加えられた変更によって簡単に破られる可能性があります。 代わりに、彼は for ループ、または少なくとも forEach を使用するように指示しました。 これは私にとって非常に意味のあることでした。 これは、途中でボックスがチェックされているかどうかを確認しながら、HTML の各部分を確認する非常に簡単な方法です。 しかし、それは戦いの半分にすぎませんでした。
forEach を使用した後、最初にチェックされた要素と最後にチェックされた要素の間にどの要素があるかを判断するための新しい変数を作成する必要がありました。 これは、残りのボックスをチェックし、最初にチェックされた要素のプロパティを反映するようにそのプロパティを変更する方法です。 ここには行が多すぎて少し迷ってしまいました...もう一度 || を使用します。 ! を使用します。変数の前というのは私にとって奇妙な概念です。 次のプロジェクトまでにもっと調べなければなりません。
何が起こっているのかわからないうちに、どういうわけか私たちはすでにチャレンジを終えていました。 それはうまくいきました。 その瞬間、この課題は思っていたよりもはるかに単純なものであることが分かりました。 結局のところ、コードはそれほど多くありませんでした。 すべての部品を一緒に使用できるようにすることが複雑な部分でした。 私自身でこれを解決できたかもしれませんが、そうは言っても、今週末までに実行可能な解決策を思いつくことができたとは思えません。
それでは、この投稿はこれで終わります。 今日のレッスンは私にとって最高のものではありませんでしたが、私にはまだまだ長い道のりがあることを思い出させてくれました。 次回の投稿では、Wes Bos の JavaScript 30 with - 11 Custom HTML5 Video player!

の次の部分をチェックしに戻ってきていただければ幸いです。

picture of the next lesson!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/virtualsbriety/javascript30-10-hold-shift-to-check-multiple-checkboxes-4ln5?1 侵害がある場合は、削除するために[email protected]までご連絡ください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3