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 :

contexte d'exécution de fonction


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Par défaut contexte d'exécution de fonction
    Bonsoir a tous, voila je me prend la tête sur un problème de contexte d'exécution d'une fonction dont voila un résumé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script language="javascript" type="text/javascript" >
    	function init(){
    		val = "start value";
    		link = document.getElementById("lien");
    		link.onmouseover = function(){
    			alert(val);		
    		}
    		val = "end value";
    	}
    </script>
    Bon le problème c'est que quand onmouseover est dispatché val vaut "end value" mais moi je voudrais 'start value'. J'ai déjà résolu ce genre de problème par le passé mais impossible de retrouver comment. Je pensais que c'était avec this mais si je fais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script language="javascript" type="text/javascript" >
    	function init(){
    		val = "start value";
    		link = document.getElementById("lien");
                    link.val =val;
    		link.onmouseover = function(){
    			alert(this.val);		
    		}
    		val = "end value";
    	}
    </script>
    Je me retrouve avec un undefined.... J'ai également essayé de forcer l'évaluation en faisant
    mais sans résultat.
    D'avance merci si vous avez une piste car la je m'arrache les cheveux.

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    bonjour,

    il faut déclarer les variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script language="javascript" type="text/javascript" >
    	function init(){
    		var val = "start value";
    		var link = document.getElementById("lien");
    		link.onmouseover = function(){
    			alert(val);		
    		}
    		var val = "end value";
    	}
    </script>

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    oui, et j'aurais même déclaré val avant init();

  4. #4
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    j'aurais même évité de déclarer la variable deux fois ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Par défaut
    Alors j'ai essayé de faire comme vous m'avez dit en déclarant les variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script language="javascript" type="text/javascript" >
    	var val = "start value";
    	function init(){
     
    		var link = document.getElementById("lien");
    		link.onmouseover = function(){
    			alert(val);		
    		}
    		var val = "end value";
    	}
    </script>
    Mais toujours le même problème en fait je n'obtiens pas "start value" parcque au moment ou je survole le lien val vaut "end value".

    Je vais expliquer mieux mon but, j'ai des miniatures sur ma pages d'accueil et au survol je veux changer la source de l'image, mais j'ai également un menu avec lequel je veux faire pareil au survol des items il doit avoir la même action que le survol d'une miniature donc changer la source de l'image. Et voila comment je fais:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <script language="JavaScript" type="text/javascript">
     
    	function init(){
    		addActions();
     
    	}
     
    	function addActions(){
    		var containerRight = document.getElementById("containerRight");
    		var menu = document.getElementById("menu");
    		var links = containerRight.getElementsByTagName("a");	
     
    		for(i=0;i<links.length;i++){
    			var img = links.item(i).firstChild;
    			img.onmouseover = function(){
    				overMin(this);	
    			}
    			img.onmouseout = function(){
    				outMin(this);	
    			}
                            menu.item(i).onmouseover = function(){
    				overMin(img);	
    			}
                            menu.item(i).onmouseout = function(){
    				outMin(img);	
    			}
    		}
    	}
     
    	function overMin(img){
    		img.src = "img/vignetteOver.png";
    	}
     
    	function outMin(img){
    		img.src = "img/vignette.png";
    	}
     
    </script>
    Bon ce code marche pour les miniatures mais pas pour les liens car img au moment du mouseover ou mouseout désigne la dernière image.

    Voici mon code HTML associé:
    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
            <ul id="menu">
                	<li><a href="#cat0">Cat0</a></li>
                   	<li><a href="#cat1">Cat1</a></li>
                	<li><a href="#cat2">Cat2</a></li>
                	<li><a href="#cat3">Cat3</a></li>
                	<li><a href="#cat4">Cat4</a></li>                                                
                </ul>
            </div>
     
             	<div id="containerRight">
                        <a href="#cat0" ><img class="min" src="banner/vignette.png" /></a>
                        <a href="#cat1"><img  class="min" src="banner/vignette.png" /></a>
                        <a href="#cat2"><img class="min" src="banner/vignette.png" /></a>
                        <a href="#cat3"><img class="min" src="banner/vignette.png" /></a>
                	</div>
    Merci pour vos suggestions.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Parceque tu redeclares la variable val.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var val = "start value";
    	function init(){
     
    		var link = document.getElementById("lien");
    		link.onmouseover = function(){
    			alert(val);		
    		}
    		val = "end value";
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant]Comment exécuter une fonction tous les jours
    Par pseudomh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/06/2006, 16h10
  2. Réponses: 5
    Dernier message: 28/04/2006, 14h40
  3. exécution de fonction
    Par MANU_2 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/09/2005, 16h50
  4. Est-il possible d'exécuter une fonction à partir de fichier
    Par magic8392 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 16/09/2005, 13h59
  5. [VB.NET] Exécuter une fonction VB sur un Datagrid
    Par MiJack dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/09/2004, 14h45

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