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 14/04/2011, 13h33   #1
Invité de passage
 
Homme Pascal Barthelemy
Développeur Web
Inscription : juin 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme Pascal Barthelemy
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2010
Messages : 11
Points : 0
Points : 0
Envoyer un message via MSN à bpascal91
Par défaut Raccourcir un script qui fonctionne

Bonjour tous le monde !

Je début en javascript est je voudrai si possible raccoursir la taille de mon code.
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
81
82
83
84
85
86
87
88
89
90
91
 
// Affichage de la page connecxion.php
function affConnecxion() {
	if ( a == true ) {
		document.getElementById("titre").style.display="none" ;
		document.getElementById("sujet").style.display="none" ;
		document.getElementById("connecxion").style.display="block" ;
		document.getElementById("boutDeco").style.display="block";
		document.getElementById("boutCo").style.display="none";
		document.getElementById("ouvrage").style.display="none" ;
		a = false ;
		b = true ;
		c = true ;
		} else {
			document.getElementById("connecxion").style.display="none" ;
			document.getElementById("ouvrage").style.display="none" ;
			document.getElementById("sujet").style.display="none" ;
			document.getElementById("titre").style.display="block" ;
			a = true ;
			b = true ;
			c = true ;
		}
}
 
// Affichage de la page sujet.html
function affSujet() {
	if ( b == true ) {
		document.getElementById("titre").style.display="none" ;
		document.getElementById("sujet").style.display="block" ;
		document.getElementById("connecxion").style.display="none" ;
		document.getElementById("ouvrage").style.display="none" ;
		document.getElementById("boutCo").style.display="block";
		document.getElementById("boutDeco").style.display="none";
		a = true ;
		b = false ;
		c = true ;
		} else {
			document.getElementById("connecxion").style.display="none" ;
			document.getElementById("ouvrage").style.display="none" ;
			document.getElementById("sujet").style.display="none" ;
			document.getElementById("titre").style.display="block" ;
			a = true ;
			b = true ;
			c = true ;
		}
}
 
// Afficher la liste des ouvrages
function affOuv() {
	if ( c == true ) {
		document.getElementById("titre").style.display="none" ;
		document.getElementById("sujet").style.display="none" ;
		document.getElementById("connecxion").style.display="none" ;
		document.getElementById("ouvrage").style.display="block" ;
		document.getElementById("boutCo").style.display="block";
		document.getElementById("boutDeco").style.display="none";
		a = true ;
		b = true ;
		c = false ;
		} else {
			document.getElementById("connecxion").style.display="none" ;
			document.getElementById("ouvrage").style.display="none" ;
			document.getElementById("sujet").style.display="none" ;
			document.getElementById("titre").style.display="block" ;
			a = true ;
			b = true ;
			c = true ;
		}
}
 
// Fonction event
function addEvent(elt,evt,fct) {
	if (document.addEventListener) {
		elt.addEventListener(evt,fct,false);
		} else {
			elt.attachEvent('on'+evt,fct);
			}
}
 
// Affichage de la page sujet.html
function init(){
	document.getElementById("titre").style.display="block" ;
	document.getElementById("sujet").style.display="none" ;
	document.getElementById("connecxion").style.display="none" ;
	document.getElementById("ouvrage").style.display="none" ;
		document.getElementById("boutCo").style.display="block";
		document.getElementById("boutDeco").style.display="none";
	a = true ;
	b = true ;
	c = true ;
}
Voila ma question je voudrai savoir si il me serai pas plus simple de recuperai la valeur de l'id du bouton sur le quel je clic et changer juste la valeur du display en question ?

Merci pour vos réponces
bpascal91
bpascal91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 15h34   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Fais-toi une petite fonction pour factoriser tous ces appels ^^
Code javascript :
1
2
3
4
function display(elems, etat) {
    for (var i = 0, iMax = elems.length; i < iMax; ++i)
        document.getElementById(elems[i]).style.display = etat;
}
qui te permet de remplacer par exemple ceci :

avant
Code javascript :
1
2
3
4
5
6
		document.getElementById("titre").style.display="none" ;
		document.getElementById("sujet").style.display="block" ;
		document.getElementById("connecxion").style.display="none" ;
		document.getElementById("ouvrage").style.display="none" ;
		document.getElementById("boutCo").style.display="block";
		document.getElementById("boutDeco").style.display="none";
après
Code javascript :
1
2
display(["sujet", "boutCo"], "block");
display(["titre", "connecxion", "ouvrage", "boutDeco"], "none");
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/04/2011, 15h35   #3
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 007
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 007
Points : 45 091
Points : 45 091
mauvais choix de nom de fonction ?
__________________
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 14/04/2011, 15h38   #4
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par SpaceFrog Voir le message
mauvais choix de nom de fonction ?
Pour connecxion ? Ca m'a frappé aussi au début mais la faute est partout ^^

Autre chose au fait si tu veux raccourcir ton code :
avant
Code javascript :
1
2
3
a = true;
b = true;
c = true;
après
Code javascript :
a = b = c = true;
^^

Et aussi :
avant
Code javascript :
if (a == true) ...
après(s'il s'agit de booléens comme ici, car dans certains autres cas de figure ça peut être plus complexe)
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/04/2011, 15h55   #5
Invité de passage
 
Homme Pascal Barthelemy
Développeur Web
Inscription : juin 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme Pascal Barthelemy
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2010
Messages : 11
Points : 0
Points : 0
Envoyer un message via MSN à bpascal91
ok merci je vais mettre tout ca en pratique de suite ...

Je dois louper quelque chose ou pas bien le faire
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
81
82
83
84
85
86
87
88
89
90
91
92
Code JS :
var a = b = c = true ;
// Fonction des menu
function affMenu(elems, etat) {
	for (var i = 0, iMax = elems.length; i < iMax; i++)
		document.getElementById(elems[i]).style.display = etat;
		display(["sujet", "boutonCo"], "block");
		display(["titre", "connecxion", "ouvrage", "boutonDeco"], "none");
}
 
// Affichage de la page connecxion.php
function affConnecxion() {
	if ( a == true ) {
		document.getElementById("titre").style.display="none" ;
		document.getElementById("sujet").style.display="none" ;
		document.getElementById("connecxion").style.display="block" ;
		document.getElementById("boutDeco").style.display="block";
		document.getElementById("boutCo").style.display="none";
		document.getElementById("ouvrage").style.display="none" ;
		a = false ;
		b = c = true ;
		} else {
			document.getElementById("connecxion").style.display="none" ;
			document.getElementById("ouvrage").style.display="none" ;
			document.getElementById("sujet").style.display="none" ;
			document.getElementById("titre").style.display="block" ;
			a = b = c = true ;
		}
}
 
// Affichage de la page sujet.html
function affSujet() {
	if ( b == true ) {
		document.getElementById("titre").style.display="none" ;
		document.getElementById("sujet").style.display="block" ;
		document.getElementById("connecxion").style.display="none" ;
		document.getElementById("ouvrage").style.display="none" ;
		document.getElementById("boutCo").style.display="block";
		document.getElementById("boutDeco").style.display="none";
		a = c = true ;
		b = false ;
		} else {
			document.getElementById("connecxion").style.display="none" ;
			document.getElementById("ouvrage").style.display="none" ;
			document.getElementById("sujet").style.display="none" ;
			document.getElementById("titre").style.display="block" ;
			a = b = c = true ;
		}
}
 
// Afficher la liste des ouvrages
function affOuv() {
	if ( c == true ) {
		document.getElementById("titre").style.display="none" ;
		document.getElementById("sujet").style.display="none" ;
		document.getElementById("connecxion").style.display="none" ;
		document.getElementById("ouvrage").style.display="block" ;
		document.getElementById("boutCo").style.display="block";
		document.getElementById("boutDeco").style.display="none";
		a = b = true ;
		c = false ;
		} else {
			document.getElementById("connecxion").style.display="none" ;
			document.getElementById("ouvrage").style.display="none" ;
			document.getElementById("sujet").style.display="none" ;
			document.getElementById("titre").style.display="block" ;
			a = b = c = true ;
		}
}
 
// Fonction event
function addEvent(elt,evt,fct) {
	if (document.addEventListener) {
		elt.addEventListener(evt,fct,false);
		} else {
			elt.attachEvent('on'+evt,fct);
			}
}
 
// Affichage de la page sujet.html
function init(){
	document.getElementById("titre").style.display="block" ;
	document.getElementById("sujet").style.display="none" ;
	document.getElementById("connecxion").style.display="none" ;
	document.getElementById("ouvrage").style.display="none" ;
	document.getElementById("boutCo").style.display="block";
	document.getElementById("boutDeco").style.display="none";
	a = b = c = true ;
}
 
// appel de fonction init 
addEvent(window, 'load', init);
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
code html :
<div id="MV" class="MenuVert">
<p>
	<?php
		require_once('fonctionPHP.php') ;
		Bonjour('') ; 
	?>
    <br />
    <ul>
        <li><a id="btaccueil" href="#" onClick="init()">Accueil</a></li>
        <li><a id="btsujet" href="#" onClick="affMenu("sujet", "block")">Sujet</a></li>
    </ul>
    <br />
    <ul>
        <li><a id="btouvrage" href="#" onClick="affOuv()">Liste des ouvrages</a></li>
    	<li><a id="btrecherche" href="#" onClick="affOuv()">Recherche</a></li>
    </ul>
    <br />
 
</div>
J'ai tester que sur le bouton sujet est ca marche pas mes div son dans d'autre page
bpascal91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 16h47   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 858
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 858
Points : 1 359
Points : 1 359


Code :
1
2
3
4
5
6
7
8
function display(elems, etat) {
    for (var i = 0, iMax = elems.length; i < iMax; ++i)
        document.getElementById(elems[i]).style.display = etat;
}
function affMenu() {
    display(["sujet", "boutonCo"], "block");
    display(["titre", "connecxion", "ouvrage", "boutonDeco"], "none");
}
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 16h54   #7
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 007
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 007
Points : 45 091
Points : 45 091
non display est un mot "reservé" de style
y'a risque de conflit...
__________________
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 14/04/2011, 17h15   #8
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Equivalent à ton extrait de départ (mais on est encore loin d'avoir tout optimisé hein ^^ c'est juste le plus gros)
Code javascript :
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
// Affichage de la page connecxion.php
function affConnecxion() {
	if (a) {
		disp(["connecxion", "boutDeco"], "block");
		disp(["titre", "sujet", "boutCo", "ouvrage"], "none");
		a = false;
	} else {
		disp(["titre"], "block");
		disp(["connecxion", "ouvrage", "sujet"], "none");
	}
	b = c = true;
}
 
// Affichage de la page sujet.html
function affSujet() {
	if (b) {
		disp(["sujet", "boutCo"], "block");
		disp(["titre", "connecxion", "ouvrage", "boutDeco"], "none");
		b = false;
	} else {
		disp(["titre"], "block");
		disp(["connecxion", "ouvrage", "sujet"], "none");
	}
	a = c = true;
}
 
// Afficher la liste des ouvrages
function affOuv() {
	if (c) {
		disp(["ouvrage", "boutCo"], "block");
		disp(["titre", "sujet", "connecxion", "boutDeco"], "none");
		c = false;
	} else {
		disp(["titre"], "block");
		disp(["connecxion", "ouvrage", "sujet"], "none");
	}
	a = b = true;
}
 
// Fonction event
function addEvent(elt,evt,fct) {
	if (document.addEventListener) {
		elt.addEventListener(evt,fct,false);
		} else {
			elt.attachEvent('on'+evt,fct);
			}
}
 
// Affichage de la page sujet.html
function init(){
	display(["titre", "boutCo"], "block");
	display(["sujet", "connecxion", "ouvrage", "boutDeco"], "none");
	a = b = c = true;
}
 
function disp(elems, etat) {
    for (var i = 0, iMax = elems.length; i < iMax; ++i)
        document.getElementById(elems[i]).style.display = etat;
}
...et j'ai pris en compte la remarque de Spaffy sur le nom display aussi ^^
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/04/2011, 18h14   #9
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 858
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 858
Points : 1 359
Points : 1 359
Citation:
Envoyé par SpaceFrog Voir le message
non display est un mot "reservé" de style
y'a risque de conflit...
t'es sûr de ça ? car en programmation la notion de polymorphisme dit justement que plusieurs méthodes peuvent posséder le même nom et seront appelées distinctement selon leurs contexte, ici l'objet "style" ou "window".


je ne suis pas certain de que j'avance donc corrige-moi si je me trompe.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 19h12   #10
Invité de passage
 
Homme Pascal Barthelemy
Développeur Web
Inscription : juin 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme Pascal Barthelemy
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2010
Messages : 11
Points : 0
Points : 0
Envoyer un message via MSN à bpascal91
Merci beaucoup pour l'aide que vous m'avais apporter !
Personnellement j'étais pas parti sur cette voie là
J'ai encore augmenter mes connaissance
bpascal91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 09h30   #11
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par Willpower Voir le message
t'es sûr de ça ? car en programmation la notion de polymorphisme dit justement que plusieurs méthodes peuvent posséder le même nom et seront appelées distinctement selon leurs contexte, ici l'objet "style" ou "window".


je ne suis pas certain de que j'avance donc corrige-moi si je me trompe.
+1 ^^

Mais j'ai pas osé contredire le boss ...et puis ça ne pouvait pas faire de mal de raccourcir le nom de la fonction...
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 10h00   #12
Invité de passage
 
Homme Pascal Barthelemy
Développeur Web
Inscription : juin 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme Pascal Barthelemy
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2010
Messages : 11
Points : 0
Points : 0
Envoyer un message via MSN à bpascal91
Petite question qui a son importance
si la personne qui vien voir le site n'a pas javascript activer plus rien ne fonctionne donc voila ma question :
et-il possible de faire la meme chose en php ?
Merci pour les reponces
bpascal91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 10h19   #13
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
En rechargeant la page à chaque action de l'utilisateur, oui.
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 10h53   #14
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 007
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 007
Points : 45 091
Points : 45 091
pour ce qui est des conflits de nommage entre types différents j'ai eu tellement de surprises, ne serait-ce que par exemple avec des boutons submit nommés submit
submit => fonction
submit => objet

Désormais je ne cherche pas les embrouilles je proscris l'utilisation de noms conflictuels.
__________________
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 10
Vieux 15/04/2011, 11h12   #15
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 806
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 806
Points : 35 803
Points : 35 803
+1 Spaffy

Autre cas d'école, imaginons le code suivant
Code :
1
2
3
4
5
6
7
8
var objJS = document.body;
function display(){
alert('Fonction display');
}
with(objJS.style){
    var foireux = display;
    display();
}
C'est pas top
Bon, d'accord, c'est capillotracté, mais quand même...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 11h22   #16
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par Bovino Voir le message
Bon, d'accord, c'est capillotracté, mais quand même...
ben voilà maintenant j'ai mal aux cheveux...

(with ? sérieusement ? )(j'ai jamais aimé ce "raccourci", mais je suis d'accord que c'est une réaction un peu irrationnelle )
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 13h31   #17
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 858
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 858
Points : 1 359
Points : 1 359
Citation:
Envoyé par Bovino Voir le message
+1 Spaffy

Autre cas d'école, imaginons le code suivant
Code :
1
2
3
4
5
6
7
8
var objJS = document.body;
function display(){
alert('Fonction display');
}
with(objJS.style){
    var foireux = display;
    display();
}
C'est pas top
Bon, d'accord, c'est capillotracté, mais quand même...
oui et non !

parce que si tu forces le contexte "document.body.style" au lieu de "window", le programmeur doit savoir à quoi il s'en tient !

d'ailleurs pour bien faire et être sûr d'éviter ce genre d'erreurs, tous les appels devraient se faire sur les objets auxquels ils se rapportent :
Code :
1
2
window.display();
window.alert();
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 13h48   #18
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 806
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 806
Points : 35 803
Points : 35 803
Ah non

with ne modifie pas le contexte, il l'enrichit :
Code :
1
2
3
4
5
6
7
8
9
var objJS = document.body;
function display(){
alert('Fonction display');
}
with(objJS.style){
    var foireux = display;
    alert('toto');
    display();
}
D'autre part, l'objet window est implicite, il n'est donc pas nécessaire de le préciser.

Mais pour en revenir à
Citation:
plusieurs méthodes peuvent posséder le même nom et seront appelées distinctement selon leurs contexte
tu as raison, mais ça reste selon moi maladroit, c'est pour cela que je préconise d'éviter des nommages pouvant porter à confusion voire à conflit
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 14h07   #19
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 858
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 858
Points : 1 359
Points : 1 359
Citation:
Envoyé par Bovino Voir le message
with ne modifie pas le contexte, il l'enrichit :
effectivement.

Citation:
Envoyé par Bovino Voir le message
D'autre part, l'objet window est implicite, il n'est donc pas nécessaire de le préciser.
je sais, c'est justement pour ça que je disais :
"pour bien faire et être sûr d'éviter ce genre d'erreurs, tous les appels devraient se faire sur les objets auxquels ils se rapportent"


Citation:
Envoyé par Bovino Voir le message
tu as raison, mais ça reste selon moi maladroit, c'est pour cela que je préconise d'éviter des nommages pouvant porter à confusion voire à conflit
soit comme tu dis, éviter les nommages pouvant porter à confusion, soit éviter les appels implicites à l'objet window et justement le préciser. (ou alors bien connaitre son contexte).


je pense (donc selon moi) que les 2 façons de faire se valent.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h08.


 
 
 
 
Partenaires

Hébergement Web