J'ai un tableau avec des chiffres. Lorsque je clique sur une cellule du tableau, elle bascule l'état actif. Je veux sélectionner une cellule et appuyer sur crtl et sélectionner une autre cellule, et comme résultat les cellules entre la première et la seconde deviendront actives. Comment l'implémenter?
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';
}
}
}
Cela devrait fonctionner comme la mise en surbrillance et fonctionne dans les deux sens
javascript
html
css
greenfield
la source
la source
lastclick
àthisclick
et vérifiez également lectrl
clicRéponses:
Essaye ça:
codepen
la source
J'ai programmé la partie Javascript complètement différente . J'espère que vous pourrez toujours l'utiliser. Mais il fait exactement ce que vous avez demandé.
Avec Shift + Cell, vous pouvez sélectionner toutes les cellules entre les deux.
bonne chance ;)
la source
Utilisation de
previousElementSibling
etcompareDocumentPosition()
Démo de travail
https://codepen.io/aswinkumar863/pen/QWbVVNG
la source
Solution complète avec fonctionnalités avant et arrière:
la source
J'ai créé en stockant l'index de l'élément sélectionné. Cela fonctionne dans les deux sens (2 -> 6) et (6-> 2)
la source
Sélectionnez un ou un intervalle, mais si vous appuyez sur Ctrl et cliquez sur la 3ème fois, la sélection précédente est réinitialisée et le nouveau commence à partir du 1er élément (pas si difficile à étendre).
la source
Avec une légère modification, vous pouvez le faire comme ceci:
Afficher l'extrait de code
À la suite du commentaire concernant le fait que cela ne fonctionne pas à l'envers, j'ai légèrement haché l'original afin qu'il fonctionne dans les deux sens de sélection. La version modifiée utilise des
dataset
attributs - dans ce cas, attribués sous forme d'entiers. Un enregistrement de la cellule initiale cliquée est conservé et, si lactrl
touche est enfoncée, un calcul simple est effectué pour déterminer si l'utilisateur sélectionne en avant ou en arrière - ce qui à son tour affecte la boucle utilisée et donc l'affectation de la classe active. Un petit ajustement au CSS en utilisant des variables était juste pour plus de commodité ...Afficher l'extrait de code
la source
Si vous êtes ouvert à jquery, voici une solution. Notez que cela ne fonctionne pas en sélection inverse
la source