J'ai mis en place un test pour résoudre ce problème en utilisant jQuery car honnêtement, cela le rend plus facile. La méthode que j'ai utilisée était d'itérer sur les éléments possibles et de vérifier s'ils sont à l'intérieur de la gamme.
function display() {
if (document.getSelection) {
var str = document.getSelection();
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
var str = range;
} else {
var str = 0;
}
if(str != 0){
$("td").each(function() {
var range, sourceRange, compare;
range = str.getRangeAt(0);
sourceRange = document.createRange();
sourceRange.selectNode(this);
compare = range.compareBoundaryPoints(Range.START_TO_END, sourceRange) * range.compareBoundaryPoints(Range.END_TO_START, sourceRange);
if (compare == -1){
alert(this.id);
}
/*
if you really just want to change the background color, uncomment this code:
*/
/*
if (compare == -1){
$(this).css("background", "#f00");// or any other color here.
}
*/
});
);
}
if (window.Event)
document.captureEvents(Event.MOUSEUP);
document.onmouseup = display;
Ce n'est probablement pas la meilleure solution, mais cela pourrait nous aider à avancer dans la bonne direction.
Vous voulez dire sélectionner avec la souris ou quelque chose? Exactement à quel type d'interaction de l'utilisateur pensez-vous? – Pointy
Oui. Par exemple, sélectionnez les 5 premières cellules de la première rangée. J'ai une valeur de chaîne par défaut dans les cellules. Cette chaîne est ensuite mise en surbrillance. Ensuite, je veux cliquer sur un bouton qui déclencherait la fonction pour changer la couleur d'arrière-plan des cellules sélectionnées. – user366121
J'ai essayé ce code: function getSelectedCells() { selObj = window.getSelection(); alerte (selObj); } Et il a imprimé le contenu cellulaire des cellules sélectionnées. Est-ce que quelqu'un sait comment je peux utiliser cela pour obtenir l'identifiant des cellules sélectionnées? – user366121