Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2012, 18h07   #1
Membre éclairé
 
Avatar de keaton7
 
Inscription : octobre 2007
Messages : 676
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 676
Points : 320
Points : 320
Par défaut [Syntaxe] Déclaration de variable, petite question

Bonjour,

Dans des fichiers de la doc Yahoo YUI!, je suis tombé sur cette syntaxe :

Code :
var ua = YAHOO.env.ua , oAnim;
Un peu plus loin dans le fragment de code, ua et oAnim sont utilisés comme si ils avaient une valeur spécifique, or je ne vois qu'une seule attribution.

Alors qu'est ce qui m'échappe dans cette syntaxe selon vous ?

__________________
Spécialité : Développement WEB
Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords

keaton7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 19h37   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 079
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 079
Points : 45 213
Points : 45 213
je pense qu'un bout de code t'a échappé

Code :
1
2
var ua = 6 , oAnim;
alert(oAnim)
oAnim n'est pas défini

Code :
1
2
var ua = 6 , oAnim=8;
alert(oAnim)
oAmin est defini
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 22h20   #3
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 949
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 949
Points : 4 784
Points : 4 784
Bonsoir,
on trouve quand même dans le code
Code :
1
2
3
oAnim = new YAHOO.util.Anim(oUL, 
            { marginTop: { to: 0 } },
            .5, YAHOO.util.Easing.easeOut);
c'est bien une initialisation, et pour son utilisation il y a un test
Code :
1
2
3
4
        if (oAnim && oAnim.isAnimated()) {
            oAnim.stop();
            oAnim = null;
        }
cela reste somme toute assez courant
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 10h07   #4
Membre éclairé
 
Avatar de keaton7
 
Inscription : octobre 2007
Messages : 676
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 676
Points : 320
Points : 320
Je vous met tout, ce sera plus simple pour comprendre (c'est extrait de la doc pour le composant menu)

Code :
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
            var ua = YAHOO.env.ua , oAnim;
            var onSubmenuBeforeShow = function (p_sType, p_sArgs) {
                var oBody , oElement , oShadow , oUL;
                if (this.parent) {
                    oElement = this.element;
                    oShadow = oElement.lastChild;
                    oShadow.style.height = "0px";
                    if (oAnim && oAnim.isAnimated()) {
                        oAnim.stop();
                        oAnim = null;
                    }
                    oBody = this.body;
                    if (this.parent &&
                        !(this.parent instanceof YAHOO.widget.MenuBarItem)) {
                        if (ua.gecko || ua.opera) {
                            oBody.style.width = oBody.clientWidth + "px";
                        }
                        if (ua.ie == 7) {
                            oElement.style.width = oElement.clientWidth + "px";
                        }
                    }
                    oBody.style.overflow = "hidden";
                    oUL = oBody.getElementsByTagName("ul")[0];
                    oUL.style.marginTop = ("-" + oUL.offsetHeight + "px");
                }
            }
            var onTween = function(p_sType, p_aArgs, p_oShadow) {
                if (this.cfg.getProperty("iframe")) {
                    this.syncIframe();
                }
                if (p_oShadow) {
                    p_oShadow.style.height = this.element.offsetHeight + "px";
                }
            }
            var onAnimationComplete = function(p_sType, p_aArgs, p_oShadow) {
                var oBody = this.body,
                    oUL = oBody.getElementsByTagName("ul")[0];
                if (p_oShadow) {
                    p_oShadow.style.height = this.element.offsetHeight + "px";
                }
                oUL.style.marginTop = "";
                oBody.style.overflow = "";
                if (this.parent &&
                    !(this.parent instanceof YAHOO.widget.MenuBarItem)) {
                    if (ua.gecko || ua.opera) {
                        oBody.style.width = "";
                    }
                    if (ua.ie == 7) {
                        this.element.style.width = "";
                    }
                }
            }
            var onSubmenuShow = function(p_sType, p_sArgs) {
                var oElement , oShadow , oUL;
                if (this.parent) {
                    oElement = this.element;
                    oShadow = oElement.lastChild;
                    oUL = this.body.getElementsByTagName("ul")[0];
                    oAnim = new YAHOO.util.Anim(oUL,
                        { marginTop: { to: 0 } },
                        .5, YAHOO.util.Easing.easeOut);
                    oAnim.onStart.subscribe(function () {
                        oShadow.style.height = "100%";
                    });
                    oAnim.animate();
                    if (YAHOO.env.ua.ie) {
                        oShadow.style.height = oElement.offsetHeight + "px";
                        oAnim.onTween.subscribe(onTween, oShadow, this);
                    }
                    oAnim.onComplete.subscribe(onAnimationComplete, oShadow, this);
                }
            }
            var oMenuBar = new YAHOO.widget.MenuBar("productsandservices", {
                                                    autosubmenudisplay: true,
                                                    hidedelay: 750,
                                                    lazyload: true });
            oMenuBar.subscribe("beforeShow", onSubmenuBeforeShow);
            oMenuBar.subscribe("show", onSubmenuShow);
            oMenuBar.render();
En effet, je vois bien que oAnim est déclaré apparemment de façon globale dans la méthode onSubmenuShow, cependant, elle est utilisée (ou déclarée) dans la méthode onSubmenuBeforeShow.

Veux-tu dire qu'elle est déclarée pour "annoncer" sa portée dans onSubmenuBeforeShow, puis attribuée dans onSubmenuShow ? C'est ce qui me parait le plus logique du coup (néanmoins tordu, mais logique ^^).
__________________
Spécialité : Développement WEB
Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords

keaton7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 11h12   #5
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 949
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 949
Points : 4 784
Points : 4 784
pas regardé plus avant, mais si il y a demande d'affichage d'un menu, on vérifie qu'il n'y en a pas en cours, OR la 1st fois il n'y en aura pas d'où le
Code :
1
2
3
4
if (oAnim && oAnim.isAnimated()) {
  oAnim.stop();
  oAnim = null;
}
qui test si il en a en cours et qui le stoppe dans ce cas.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h41.


 
 
 
 
Partenaires

Hébergement Web