OVH Cloud OVH Cloud

Le 'this' d'un TD.

11 réponses
Avatar
Vincent
Salut,

J'essaie de faire passer l'object 'this' dans le onMouseOver d'un TD
mais cela ne passe pas ! Il me dit que l'objet n'est pas reconnu...
Code:

<td onMouseOver="Mouse_On_TDButton('this')">Valider</b></font></td>

function Mouse_On_TDButton(e) {
if(document.all) {
document.getElementById(e).style.cursor='hand' ;
} else {
document.getElementById(e).style.cursor='pointer' ;
}
}

Et l'erreur est:
Erreur : document.getElementById(e) has no properties
Ligne : 221

Vous auriez une idée ?

Merci,
Vincent.

10 réponses

1 2
Avatar
ASM
Salut,

J'essaie de faire passer l'object 'this' dans le onMouseOver d'un TD
mais cela ne passe pas ! Il me dit que l'objet n'est pas reconnu...
Code:

<td onMouseOver="Mouse_On_TDButton('this')">Valider</b></font></td>


que foutent ces </b></font>
qui n'ont pas été préalablement ouverts dans le td ?

Et l'erreur est:
Erreur : document.getElementById(e) has no properties


normal puisque tu n'as pas donné l'id du TD dans ton appel :
document.getElementById(e).style.cursor il eut fallu (à condition que le TD ait un id) :
document.getElementById(e.id).style.cursor
et comme il n'en a pas ... çà ne fonctionnera pas plus

donc tout simplement :

function Mouse_On_TDButton(e) {
if(document.all) e.style.cursor='hand' ;
else e.style.cursor='pointer' ;
}

ou dé piou z'en piou tshort :

function Mouse_On_TDButton(e) {
e.style.cursor = (document.all)? 'hand' : 'pointer' ;
}

et je ne suis pas d'accord du tout avec ce 'document.all'
qui ne limite pas la bidouille à IE
en effet 'document.all' est aussi compris par d'autres navigateurs

donc çà nous donne :

<script type="text/javascript">
var ieúlse; /*@cc_on ie=true; @*/
function Mouse_On_TDButton(e){ e.style.cursor = ie? 'hand' : 'pointer' ;}
</script>

la partie en commentaire est du pur langage crosoft
on est quasi assuré qu'il n'y aura que les IE pour le comprendre
(et y compris IE Mac)

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Cenekemoi

Salut,

J'essaie de faire passer l'object 'this' dans le onMouseOver d'un TD
mais cela ne passe pas ! Il me dit que l'objet n'est pas reconnu...
Code:

<td onMouseOver="Mouse_On_TDButton('this')">Valider</b></font></td>


1ère erreur: enlever les quotes autour de "this", c'est un objet en
lui-même

function Mouse_On_TDButton(e) {
if(document.all) {
document.getElementById(e).style.cursor='hand' ;
} else {
document.getElementById(e).style.cursor='pointer' ;
}
}



Comme "this" est l'objet que tu cherches à atteindre, considère-le comme
tel.

En résumé:

<td onMouseOver="Mouse_On_TDButton(this)">Valider</td>

function Mouse_On_TDButton(obj) {
obj.style.cursor = document.all ? 'hand' : 'pointer' ;
}

Et il faudrait prévoir le cas où la souris sort du TD avec onMouseOut...

--
Cordialement, Thierry ;-)

Avatar
ASM

1ère erreur: enlever les quotes autour de "this", c'est un objet en
lui-même


ha ! oui ! çà m'avait échappé !

Et il faudrait prévoir le cas où la souris sort du TD avec onMouseOut...


est-ce vraiment nécessaire ?
pour ce cas de figure

si on quitte le td javascripté
le curseur ne va pas rester sur la petite menote, non ?



--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Cenekemoi
Bonjour à ASM qui nous a

1ère erreur: enlever les quotes autour de "this", c'est un objet en
lui-même


ha ! oui ! çà m'avait échappé !

Et il faudrait prévoir le cas où la souris sort du TD avec
onMouseOut...


est-ce vraiment nécessaire ?
pour ce cas de figure

si on quitte le td javascripté
le curseur ne va pas rester sur la petite menote, non ?


Ben si, bien sûr : il faut remettre la valeur "default" sur onMouseOut.

--
Cordialement, Thierry ;-)


Avatar
ASM
Bonjour à ASM qui nous a

si on quitte le td javascripté
le curseur ne va pas rester sur la petite menote, non ?



Ben si, bien sûr : il faut remettre la valeur "default" sur onMouseOut.


Ben ... tant mon IE que mon FF ne sont pas si bêtes que çà

Ils savent bien que la petite menote n'est que pour
le td concerné.
Une fois ce TD quitté plus la peine de montrer le hand/pointer

En fait on se sert du onmouseover pour commander qquechose
qui est définitif (avoir le curseur 'petiote menote') pour cet objet
on n'a donc pas à revenir au curseur par défaut
donc ... pas besoin du onmouseout.

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Cenekemoi
Bonjour à ASM qui nous a
Bonjour à ASM qui nous a

si on quitte le td javascripté
le curseur ne va pas rester sur la petite menote, non ?



Ben si, bien sûr : il faut remettre la valeur "default" sur
onMouseOut.


Ben ... tant mon IE que mon FF ne sont pas si bêtes que çà

Ils savent bien que la petite menote n'est que pour
le td concerné.
Une fois ce TD quitté plus la peine de montrer le hand/pointer

En fait on se sert du onmouseover pour commander qquechose
qui est définitif (avoir le curseur 'petiote menote') pour cet objet
on n'a donc pas à revenir au curseur par défaut
donc ... pas besoin du onmouseout.


C'est vrai, au temps pour moi ! Mais il ne faudrait pas généraliser la
chose...

--
Cordialement, Thierry ;-)



Avatar
Thibaut Allender
J'essaie de faire passer l'object 'this' dans le onMouseOver d'un TD
mais cela ne passe pas ! Il me dit que l'objet n'est pas reconnu...


pourquoi ne pas utiliser une classe sur ce TD et définir le curseur en CSS ?

<td class="pointer">valider</td>

td.pointer {
cursor: pointer;
_cursor: hand;
}

Vous auriez une idée ?


ne pas mettre de JS là où on n'en a pas besoin...
j'irais même plus loin en disant "pourquoi utiliser des tables là où on
en a pas besoin?" mais le débat est trop long ;-)

--
thibaut allender | http://capsule.org | http://photo.capsule.org

Avatar
ASM

J'essaie de faire passer l'object 'this' dans le onMouseOver d'un TD
mais cela ne passe pas ! Il me dit que l'objet n'est pas reconnu...



pourquoi ne pas utiliser une classe sur ce TD et définir le curseur en CSS ?


j'eussions bien proposé la chose mais ... et IE ?


--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Thibaut Allender
j'eussions bien proposé la chose mais ... et IE ?


IE 6 reconnait hand et pointer, IE 5.5 et inférieur "hand", c'est pour
cela que j'ai utilisé un hack (l'underscore) pour que _cursor: hand ne
soit pris en compte que par IE (toutes versions win)

--
thibaut allender | http://capsule.org | http://photo.capsule.org

Avatar
ASM

j'eussions bien proposé la chose mais ... et IE ?



IE 6 reconnait hand et pointer, IE 5.5 et inférieur "hand",


j'avais lu rapidement et cru que tu avais employé :hover

ce qui n'aurait eu aucun interet en la circonstance

--
Stephane Moriaux et son [moins] vieux Mac


1 2