Anomalie #2174
ouvertLa sélection d'une ligne dans un tableau efface les classes CSS pré-existantes sur le <TR/>
0%
Lors de l'édition d'un document avec tableau, vérifier avec l'inspecteur DOM que les classes des tr ne sont pas enlevées. Les classes spécifiques seront mises à la main avec l'inspecteur DOM.
Pas de TAUFU.
Description
Si on ajoute des classes aux TR d'un tableau, alors, lors de la sélection d'une ligne, la fonction selecttr() va effacer le className, sur le TR sélectionné, pour positionner sa classe "selecta". De même lors de la dé-sélection de la ligne, il va remettre className à blanc.
Il faudrait que selecttr() n'ajoute, ou n'efface, que sa classe "selecta" et ne touche pas aux autres classes qui seraient positionnées :
function selecttr(o,tr) {
...
if (seltr) {
/* Enlever seulement la classe "selecta" */
seltr.className = seltr.className.replace(/\s*\bselecta\b/, '');
}
...
/* Ajouter seulement la classe "selecta" */
seltr.className = seltr.className + ' ' + 'selecta';
...
}
Le problème n'est pas que dans selecttr(), et d'autres partie sont cassés par la présence de plusieurs classes dans className.
Idem pour voir si un élément est d'une classe donnée, il est préférable de voir s'il contient la classe plutôt que de faire une comparaison stricte :
/* elmt ne sera pas detecté comme étant de classe "foo" si className="foo bar bar" */
if( elmt.className == 'foo' ) { ... }
/* elmt sera bien détecté comme étant de classe "foo" */
if( elmt.className.match(/\bfoo\b) ) { ... }
Sinon, on peut aussi utiliser jQuery et ses méthodes addClass(), removeClass() et hasClass().
Mis à jour par Éric Brison il y a plus de 14 ans
- Temps estimé mis à 3:00 h
- Complexité mis à Simple
- Priorité changé de Normal à Bas
- Version cible mis à 3.2 rx
Mis à jour par Marc Claverie il y a environ 12 ans
- Version cible changé de 3.2 rx à 3.3.0
Mis à jour par Marc Claverie il y a environ 12 ans
- Version cible changé de 3.3.0 à 3.3#Document