IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

onMouseover et temps de defilement


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut onMouseover et temps de defilement
    Bonjour,

    Je veux créer sur mon site une animation en rollover avec un texte qui apparait lorsqu'on survole un autre texte avec la souris.
    J'ai reussi grace au forum à la créer avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <p><span style="font-size: 11pt;"><a class="MsoNormal" style="font-size: 11pt;" onmouseover="javascript:getElementById('monCalque').innerHTML = '<em>texte2</em>';" onmouseout="javascript:getElementById('monCalque').innerHTML = '';"> ? texte 1</a> <br />
    <div id="monCalque">&nbsp;</div>
    </span></p>

    J'ai trouvé que la fonction settimeout permet de faire cela, j'ai essayé d'adapter mon code ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p><span style="font-size: 11pt;"><a class="MsoNormal" style="font-size: 11pt;" onmouseover="javascript:getElementById('monCalque').innerHTML = '<em>texte2</em>';" onmouseout="javascript:setTimeout (getElementById('monCalque').innerHTML='<em>texte2</em>', 3000);"> ? texte 1</a> <br />
    <div id="monCalque">&nbsp;</div>
    </span></p>

    Mais avec ce code, lorsque la souris quitte le texte 1, le texte 2 ne disparait pas. J'ai du mal à régler cette fonction settimeout, car je suis novice en javascript.
    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    externalise tes instructions, ne les mets pas dans la balise mais dans des fonctions dans le head de la page et appelle les dans les evènements...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function linkover(obj){
    obj.innerHTML="'<em>texte2</em>";
    obj.onmouseout=function(){setTimeout(fucntion(){obj.innerHTML="<em>texte2</em>"},3000)}
    }
    <a class="MsoNormal" style="font-size: 11pt;" onmouseover="linkover(getElementById('monCalque'))"> ? texte 1</a>
    ou alors un autre focntion séparée pour le linkout ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    J'ai rentré le code suivant en séparant la fonction dans le <head> et le <body> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans nom</title>
    <script language="javascript">
    function linkover(obj){
    obj.innerHTML="'<em>texte2</em>";
    obj.onmouseout=function(){setTimeout(fucntion(){obj.innerHTML="<em>texte2</em>"},3000)}
    }
    </script> 
    </head>
     
    <body>
     
    <a class="MsoNormal" style="font-size: 11pt;" onmouseover="linkover(getElementById('monCalque'))"> ? texte 1</a>
    </body>
    Mais cela ne fonctionne pas le deuxiéme texte n'apparait pas.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.innerHTML="'<em>texte2</em>";
    Ooops ! un guillemet de trop...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.innerHTML="<em>texte2</em>";

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.onmouseout=function(){setTimeout(fucntion(){obj.innerHTML="<em>texte2</em>"},3000)}
    Un peu de vérification avant de copier coller...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.onmouseout=function(){setTimeout(function(){obj.innerHTML="<em>texte2</em>"},3000)}
    C'ailleurs SpaceFrog,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.onmouseout=function(){setTimeout(obj.innerHTML="<em>texte2</em>",3000)}
    voire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.onmouseout=setTimeout(obj.innerHTML="<em>texte2</em>",3000)
    ne suffit pas ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Je vous remercie de vos réponses, mais cela ne fonctionne pas le deuxiéme texte n'apparait pas.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    oui desolé avec des pattes palmées je m'emporte sur le clavier et je code direct sans vérifier

    Bovi ... la seconde peut être... la dernière non !
    mais je préfère toujours être sur de passer une fonction dans au onclick et au setInterval, ça évite une interprétation inutile

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    J'ai essayé avec les quatres, mais cela ne fonctionne pas. Cela vient peut être de mon interprétation du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <head>
     
    <script language="javascript">
    function linkover(obj){
    obj.innerHTML="<em>texte2</em>";
    obj.onmouseout=function(){setTimeout(function(){obj.innerHTML="<em>texte2</em>"},3000)}
    }
    </script> 
    </head>
     
    <body>
     
    <a class="MsoNormal" style="font-size: 11pt;" onmouseover="linkover(getElementById('monCalque'))"> ? texte 1</a>
    </body>

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    avec des pattes palmées je m'emporte sur le clavier et je code direct sans vérifier
    L'intérêt, c'est que ça oblige à vérifier avnt de copier coller, et une faute de frappe, ça arrive à tout le monde
    C'ailleurs
    Plus sérieusement et pour en revenir au problème de zaldiko, pourquoi faire une fonction externe pour le onmouseover et pas pour le onmouseout ?
    Je m'explique : on a constaté que le onload fonctionne différement selon qu'il est dans le body
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="quelquechose">
    ou dans le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.onload=quelquechose
    Est-ce qu'il ne pourrait pas s'agir du même genre de problème...
    Du coup, la solution ne serait-elle pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class="MsoNormal" style="font-size: 11pt;" onmouseover="linkover('monCalque')" onmouseout="linkover('monCalque')"> ? texte 1</a>
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function linkover(monElement){
    var obj = document.getElementById(monElement).innerHTML;
    var text=(obj==' '?["<em>texte2</em>",3000]:[' ',0]);
    setTimeout(function(){obj=text[0]},text[1])
    }

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Je viens de tester ta solution bovino, mais cela ne fonctionne pas non plus.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oui, je me suis peut-être un peu emballé sur le coup, essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function linkover(monElement){
    var obj = document.getElementById(monElement);
    var text=(obj.innerHTML==' '?["<em>texte2</em>",3000]:[' ',0]);
    setTimeout(function(){obj.innerHTML=text[0]},text[1])
    }

  12. #12
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Et si ça marche pas, ce serait possible d'avoir un lien vers la page ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Je viens d'essayer également cette solution, mais cela ne fonctionne pas

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    D'après moi, c'est la valeur du champ vide qui pose souci, on va essayer autrement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function linkover(monElement){
    var obj = document.getElementById(monElement);
    var text=(obj.innerHTML.length>1?['<em>texte2</em>',3000]:[' ',0]);
    setTimeout(function(){obj.innerHTML=text[0]},text[1])
    }

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Ok ce code fonctionne quand on survol avec la souris il met bien les 3 secondes avant d'afficher le texte.
    Par contre quand on quitte le texte, le texte disparait de suite. Je voudrais qu'il mettent aussi 3 secondes avant de partir.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Pardon j'avais sauté le post ou tu demandé un lien. Je t'ai mis la page en ligne avec le dernier code à l'adresse :

    http://temp.fidanza-audit.fr/Untitled-11.html

  17. #17
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ah... désolé, j'avais pas compris ça (dommage, c'est plus simple à réaliser !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var text=(obj.innerHTML.length>1?['<em>texte2</em>',3000]:[' ',0]);
    Dans cette ligne, en fonction du innerHTML de ta div, on crée un tableau avec la nouvelle div et le temps d'apparition / disparition.
    Donc tu peux, soit vouloir affecter une durée différente en apparition / disparition et tu gardes cette structure en modifiant les durées (ici 3000 et 0 en millisecondes), soit tu veux la même durée, et tu modifies avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function linkover(monElement){
    var obj = document.getElementById(monElement);
    var text=(obj.innerHTML.length>1?'<em>texte2</em>':' ');
    setTimeout(function(){obj.innerHTML=text},3000)
    }
    Où tu peux ajuster la durée.

    Edit :
    Dans la page html d'origine, ta div contient juste &nbsp; c'est pour ça que j'ai essayé de prendre en compte cet espace...

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    J'aurais souhaité le même temps d'affichage, mais j'ai essayé tes deux codes et dans cela le texte 2 n'apparait pas.
    Si je rajoute un deuxiéme <em>texte2</em> le texte apparait bien au bout de 3 secondes, mais par contre il ne disparait pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var text=(obj.innerHTML.length>1?['<em>texte2</em>',3000]:['<em>texte2</em>',0]);

    Je te remercie de ta patience.

  19. #19
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var text=(obj.innerHTML.length>1?['<em>texte2</em>',3000]:[' ',0]);
    Ca, je l'ai mis pour ensuite t'expliquer ce qu'il fait...

    Si tu souhaites la même durée, utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function linkover(monElement){
    var obj = document.getElementById(monElement);
    var text=(obj.innerHTML.length>1?'<em>texte2</em>':' ');
    setTimeout(function(){obj.innerHTML=text},3000)
    }
    Dans lequel tu peux modifier le 3000 par la durée de ton choix (en ms).

    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var text=(obj.innerHTML.length>1?['<em>texte2</em>',3000]:['<em>texte2</em>',0]);
    te remplace le contenu de ta div par <em>texte2</em> au survol au bout de 3s et remplace ce contenu par... le second <em>texte2</em> immédiatement. Donc, on ne voit pas le changement !

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Avec le dernier code que tu m'a donné ca ne fonctionnais pas. Mais avec ton explication, je commence un peu à comprendre comment cela fonctionne.
    J'ai essayé avec le code suivant et cela fonctionne parfaitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function linkover(monElement){
    var obj = document.getElementById(monElement);
    var text=(obj.innerHTML.length>1? ' ' : '<em>texte2</em>');
    setTimeout(function(){obj.innerHTML=text},3000)
    }
    Je te remercie beaucoup de ton aide Bovino, je commencais à m'arracher les cheveux. Encore merci.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Graphique qui defile en fonction du temps
    Par M0llusk59 dans le forum Qt
    Réponses: 9
    Dernier message: 11/04/2014, 11h41
  2. Intervalle de temps en defilement photo javascript
    Par pls85 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/02/2011, 14h32
  3. test temp onmouseover
    Par sd dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2008, 11h37
  4. Defilement horizontal image, fleches gauche droit onmouseover dans ul
    Par sterix92 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/07/2008, 14h11
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo