cs_Lelys
Messages postés18Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 9 mars 2008
-
26 mai 2007 à 22:21
cs_Lelys
Messages postés18Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 9 mars 2008
-
29 mai 2007 à 10:17
Bonjour !
Je suis en train de créer une info-bulle personnalisée sur mon site, le texte de celle-ci est désigné par l'attribut Title du Span lorque l'on positionne le curseur sur le celui-ci.
Pour que seul mon info-bulle perso s'affiche (donc sans le texte du Title), je met la valeur du Title du Span à -> span.title = "";
Mon problème est qu'il m'est impossible ensuite d'attribuer une valeur à mon Title, comme si l'avoir vidé avait complètement supprimé l'attribut...
Voilà, j'espère avoir été clair, et merci d'avance !
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 28 mai 2007 à 14:49
>>donc le reste du code qui ne serait "pas compatible" ?
compatible, je ne sais pas, mais erroné c'est sûr.
>>après un temps y'a setTimeout, mais le code qui se trouve après s'execute quand même.
oui
>>tu connaitrais pas un moyen pour bloquer la suite d'un code x secondes
tu as ça par exemple :
function actuelle()
{ instructions 1
ici, il faudrait attendre 10 secondes sans dérouler le reste de la function
instructions 2
}
il faut faire ( ou l'équivalent ) :
function suite()
{ instructions 2
}
function actuelle()
{ instructions 1
setTimeout ("suite();"délai);
}
cs_Lelys
Messages postés18Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 9 mars 2008 27 mai 2007 à 21:29
Oups ! Mes excuses pour le code, j'y ai pensé mais ça m'est effectivement sortit de l'esprit.
C'est un code semblable qui pose problème, mais pas dans un onclick.
C'est à dire que le div est vidé sur un onmouseover et rempli sur un onmouseout (remplissage qui ne fonctionne donc pas), c'est vraiment étrange !
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 28 mai 2007 à 08:27
c'est sorti de l'esprit... mais sans y revenir ! puisque toujours pas de code !
c'est un span ou un div ?
qu'est-ce qui est vidé au onmouseover ?
le title ? dans ce cas, au survol, rien ne s'affiche.
le contenu ? dans ce cas, plus de survol posible.
cs_Lelys
Messages postés18Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 9 mars 2008 28 mai 2007 à 09:37
J'ai effectivement fais une erreur, je parlais bien d'un Title et non d'un Div.
Je ne voyais pas l'interet de mettre un code puisque le votre est quasi identique au miens.
Quoi qu'il en soit, je viens de trouver le problème :
Mon code est passé par une fonction helpS(this); sur le onMouseOver du Span.
La fonction effectue (entre autres) l'action suivante sur le Span :
var sauvTitle;
function helpS(element) {
sauvTitle = element.title;
element.title = "";
}
Ce qui sauvegarde et efface le Title sans aucun problème, pour qu'il n'y est donc plus l'info-bulle du navigateur : le but recherché.
Cependant, lorsque j'appelle ma fonction helpH(this); sur le onMouseOut du Span (qui me permet entre autres de restaurer le Title sur son Span) :
function helpH(element) {
element.title = sauvTitle;
}
Cette fonction n'a aucun effet.
J'ai donc fais plusieurs tests et j'en suis arrivé à la conclusion (en passant par un getElementById "brute", comme votre code) que le problème vient de mon passage par "this", exemple :
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 28 mai 2007 à 10:21
>>Y'a-t-il une différence entre This et getElementById ?
getElmentById recherche un élément dans la page qui possède l'ID donné
this c'est l'objet ( l'élément ) où l'on est.
tout dépend des appels donc.... et ici : on n'a pas !
si je comprend : onmouseover, on mémorise le title et on l'efface,
onmouseout, on remet le title
quel intêret ????
soit on a un title et il apparait au onmouseover
soit on n'en a pas, et il n'apparait pas !
de toute manière au onmouseout.... il n'apparait pas.
cs_Lelys
Messages postés18Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 9 mars 2008 28 mai 2007 à 10:46
> getElmentById recherche un élément dans la page qui possède l'ID donné
this c'est l'objet ( l'élément ) où l'on est.
tout dépend des appels donc.... et ici : on n'a pas !
Je ne m'en serais pas douté, je ne suis pas si bete pour ne pas avoir déduit que getElementById retourne l'element qui possède tel Id et que This est l'element, à ce niveau la, je ne serais pas capable de développer des sites internet.
Je voulais juste savoir pourquoi Title marche avec getElement et pas avec This.
>si je comprend : onmouseover, on mémorise le title et on l'efface,
onmouseout, on remet le title
quel intêret ????
C'est bien pour cette raison que j'ai précisé deux fois "entre autres", c'est évident que je vais m'amuser à créer une fonction qui enregistre le Title et une autre qui le restaure dans ce seul but, encore une fois, merci de me prendre pour un idiot.
Je vous ai expliqué qu'il s'agissait d'un info-bulle perso, il faut donc que j'efface celle du navigateur, et la restaure une fois l'info-bulle disparu.
Je n'ai jamais prétendu que le Title pouvait apparaitre sur un onMouseOut.
Tout ce que je dis c'est qu'il est impossible de définir un Title à l'aide de this.title après l'avoir effacé.
La prochaine fois je me débrouillerais tout seul, ça vaudra mieux.
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 28 mai 2007 à 11:01
>>Je ne m'en serais pas douté, je ne suis pas si bete pour ne pas avoir déduit ...
je ne faisais que répondre à ta question. pourquoi tuprends la mouche
de manière ridicule, alors que je ne fais que te répondre ????
>>Tout ce que je dis c'est qu'il est impossible de définir un Title à l'aide de this.title après l'avoir effacé.
non.... et aucune raison.
mais encore une fois : tu ne nous montres pas comment tu fait !
enfin, pas tout, pas ce qu'il faut, et ton erreur est probablement
ailleurs de ce que tu nous montres. tout simplement.
>>La prochaine fois je me débrouillerais tout seul, ça vaudra mieux.
>>Merci tout de même de votre "aide".
j'ai fait ce que j'ai pu, enfin les infos données.
parce que chez moi... ça baigne
>>encore une fois, merci de me prendre pour un idiot.
je ne tenrais que de comprendre ce que tu voulias faire
que me semble parfaitement inutile. probablement parce
que tu n'expliques pas le but. une infobulle perso
n'explique pas ce que tu fais.
cs_Lelys
Messages postés18Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 9 mars 2008 28 mai 2007 à 11:24
Excuse moi de m'être emporté.
Je t'explique ce que j'aimerais faire, demande moi s'il te manque des détails :
J'essaye de créer une info-bulle qui apparait en fondu comme sur la nouvelle version du site de PayPal, mais si tu n'a pas de compte ça ne va pas te dire grand chose.
Je fais ça pour que les visiteurs aient une aide qui ne disparait pas au bout de 3 secondes (comme le fait l'info-bulle des navigateurs avec le Title), que le texte soit plus gros et que je puisse en mettre plus.
Le texte de l'info-bulle doit etre celui de l'attribut Title de l'element que l'on survole (et qui fera donc apparaitra l'info-bulle perso au onMouseOver), je pourrais utiliser un attribut perso (du style ) pour que le Title du navigateur n'apparaissent pas, mais il faut que mon site soit validé XHTML et les attribut perso sont interdits, j'aimerais aussi ne pas affecter un Id à chaque Span d'aide pour une autre raison.
Voila le code complet de ma fonction d'affichage de l'info-bulle :
function getById(id) {
return document.getElementById(id);
}
cs_Lelys
Messages postés18Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 9 mars 2008 28 mai 2007 à 13:47
Hmm... j'ai testé ce que tu as mis (donc sans le reste du code) et ça fonctionne... c'est donc le reste du code qui ne serait "pas compatible" ?
Je vais essayer un par un les ligne de codes pour voir si une bloquerait quelque chose.
Je me demande si ça pourrait pas venir de mon setTimeout...
Si seulement en Javascript il y avait une fonction pour attendre !
Parceque quand on veux lancer une fonction après un temps y'a setTimeout, mais le code qui se trouve après s'execute quand même... tu connaitrais pas un moyen pour bloquer la suite d'un code x secondes ?