Saya punya meja dengan angka. Ketika saya mengklik sel di tabel, ini akan mengaktifkan status aktif. Saya ingin memilih satu sel dan tekan crtl dan pilih sel lain, dan sebagai hasilnya sel antara yang pertama dan yang kedua akan menjadi aktif. Bagaimana cara mengimplementasikannya?
codepen https://codepen.io/geeny273/pen/GRJXBQP
<div id="grid">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
const grid = document.getElementById("grid")
grid.onclick = (event) => {
event.stopPropagation();
const { className } = event.target;
if (className.includes('cell')) {
if (className.includes('active')) {
event.target.className = 'cell';
} else {
event.target.className = 'cell active';
}
}
}
Ini harus bekerja seperti menyoroti shift dan bekerja di kedua arah
javascript
html
css
greenfield
sumber
sumber
lastclick
kethisclick
dan juga memeriksactrl
klikJawaban:
Coba ini:
codepen
sumber
Saya memprogram bagian Javascript c sama sekali berbeda dari yang Anda lakukan. Saya harap Anda masih bisa menggunakannya. Tapi itu melakukan persis apa yang Anda minta.
Dengan Shift + Cell Anda dapat memilih semua sel di antaranya.
semoga berhasil ;)
sumber
Menggunakan
previousElementSibling
dancompareDocumentPosition()
Demo yang Bekerja
https://codepen.io/aswinkumar863/pen/QWbVVNG
sumber
Solusi lengkap dengan fungsi maju dan mundur:
sumber
Saya telah membuat dengan menyimpan indeks elemen yang dipilih. Ini bekerja dengan dua cara (2 -> 6) dan (6-> 2)
sumber
Pilih satu atau interval, tetapi jika Anda menekan Ctrl dan klik 3 kali pilihan sebelumnya diatur ulang dan baru dimulai dari item pertama (tidak terlalu sulit untuk memperpanjang).
sumber
Dengan sedikit modifikasi Anda dapat melakukannya seperti ini:
Tampilkan cuplikan kode
Sebagai lanjutan dari komentar tentang ini tidak bekerja mundur saya ulang hash sedikit asli sehingga tidak bekerja di kedua arah seleksi. Versi yang diedit menggunakan
dataset
atribut - dalam hal ini ditetapkan sebagai bilangan bulat. Catatan disimpan dari sel awal diklik dan, jikactrl
tombol ditekan perhitungan sederhana dilakukan untuk menentukan apakah pengguna memilih maju atau mundur - yang pada gilirannya mempengaruhi loop yang digunakan dan dengan demikian penugasan kelas aktif. Tweak kecil ke CSS menggunakan variabel hanya untuk kenyamanan ...Tampilkan cuplikan kode
sumber
Jika Anda terbuka untuk jquery, inilah solusinya. Perhatikan bahwa itu tidak berfungsi dalam seleksi terbalik
sumber