NikatorS
Messages postés147Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention15 avril 2011
-
15 avril 2011 à 15:24
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011
-
7 juin 2011 à 20:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 7 juin 2011 à 20:22
Eric,
Merçi beaucoup du renseignement, je ne manquerai pas de suivre ton conseil.
Jacques
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 7 juin 2011 à 19:11
Jacques,
Si tu veux trouver des exemples de Javascript contemporain, le plus simple est de regarder les tutoriaux de librairies comme PrototypeJS ou JQuery.
En effet, de nos jours plus personne ne fait du Javascript "de base" sauf pour certains projets particuliers.
Le gros avantage de ces librairies est de se charger de l'interopérabilité entre les différents navigateurs, tout en offrant des fonctions de haut niveau pour gérer les cas les plus courants.
Par exemple, avec PrototypeJS pour modifier le contenu d'une div, ça donnerait ca :
<script type="text/javascript>
$("maDiv").update("Je suis un contenu dynamique !");
</script>
Si tu parles anglais, tu peux aussi t'inscrire aux mailing lists d'aide à Javascript. Même si tu ne postes pas de messages, cést très instructif de lire les problèmes rencontrés par les autres, et les solutions proposées.
Eric
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 7 juin 2011 à 18:51
Alain,
Apres examen à tête reposée, il est bien évident que mon code bien que fonctionnant tres bien, contenait beaucoup de globales totalement inutiles puisqu'il n'y a ici qu'une seule fonction ce qui n'était pas le cas dans le script original.
Tout cela est maintenant rectifié et beaucoup plus clair.
J'ai toujours travaillé très vite mais je n'ai plus l'âge et dorénavent je prendrai le temps qu'il faudra.
Merçi pour les conseils et les remarques, il n'est jamais trop tard pour apprendre.
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 7 juin 2011 à 17:27
Ah encore une chose, j'ai corrigé 2 erreurs de
manquants dans le code html.
Copier/coller ça va plus vite mais on peut se tromper et comme l'affichage était bon je ne l'ai pas vu.
Maintenant c'est W3C nickel !
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 7 juin 2011 à 17:22
J'ai supprimé la fonction getElement pour vous contenter
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 7 juin 2011 à 15:58
Merci beaucoup mais une fois de plus je n'ai jamais prétendu qu'il fallait déclarer TOUTES les variables en globales mais qu'il est préférable pour s'y retrouver de déclarer TOUTES LES GLOBALES en début de script.
Désolé si je n'ai pas été assez clair.
Ce qui me console c'est qu'obsolète ou non ça fonctionne très bien.
Je cherche beaucoup sur Internet et suis curieux (évidemment) de savoir ou trouver ces fameuses nouvelles fonctions qui font tout plus "proprement"
Merci
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 7 juin 2011 à 15:50
" la plupart des débutants estiment qu'il est plus simple de tout déclarer en local"
je voulais dire "global" bien sur :)
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 7 juin 2011 à 15:43
tout ce qu'a dit lefauve42 est juste et témoigne des bonnes pratiques. Ton code est obsolète, de nouvelles fonctions sont maintenant supportées et permettent de faire beaucoup plus "proprement" la même chose que ce que tu proposes. Ce que tu as fait était très bien à l'époque mais javascript est un langage qui évolue très vite parce qu'il est très jeune et du coup, beaucoup de code destiné à des navigateurs dépassés devient lui même dépassé. En fait, sans être sévère, ton code est dépassé depuis 10 ans, et en terme d'ordre de grandeur par rapport à la durée de vie d'internet... je te laisse conclure...
quant aux déclarations des variables... première semaine de cours dans n'importe quelle école qui aborde la programmation : chaque variable doit être déclarée à sa juste portée, ni plus ni moins. tout déclarer en global est une faute de programmation. la plupart des débutants estiment qu'il est plus simple de tout déclarer en local, c'est une réaction naturelle qu'on a tous eu. Maintenant il faut savoir écouter les gens qui ont de l'expérience dans un domaine.
Bon courage
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 7 juin 2011 à 15:30
Bonjour mr Proviste,
Pouvez-vous avoir la gentillesse de me faire savoir quelles sont mes mauvaises pratiques et en quoi j'induit les débutants en erreur car ce n'est pas du tout dans mes intentions
Merçi d'avance
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 7 juin 2011 à 15:26
Bonjour ZOZOMUSIC,
Pour répondre à tes questions, le fichier js ddaccordion ne sert qu'au fonctionnement du menu de gauche avec lequel on modifie les affichages. Ce menu n'est pas de moi mais provient de Dynamic Drive et il fallait bien un menu pour illustrer le fonctionnement.
Pour le parametrage il y a une ewplication dans le code du menu sur la page html.
-- image 1= Left 1055 Top 180 image 2= Left 1070 Top 560 (positions par défaut) Arguments= contenu,image1,image2,left1,top1,left2,top2-->
les positions par défaut des illustrations à droite
concernent l'affichage présent sur l'écran à l'ouverture de la page.
Les arguments: content0 est le nom du div à afficher quand on clique sur ce bouton du menu.
ensuite la source de l'image 1 ou rien s'il n'y a pas d'image.
La source de l'image 2 ou rien s'il n'y a pas d'image.
les 4 derniers parametres concernent la position de ces 2 images top image 1,left image 1 - top image 2,left image 2 ou bien sur rien s'il n'y a pas d'image à afficher avec ce div. Utiles si les images à afficher sont de dimensions différentes.
J'espère avoir été plus clair.
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 6 juin 2011 à 12:10
je pense que je vais supprimer cette source
elle induit trop de débutants en erreur quant aux bonnes pratiques
zozomusic
Messages postés1Date d'inscriptionlundi 6 juin 2011StatutMembreDernière intervention 6 juin 2011 6 juin 2011 à 12:07
C'est le script que je cherchais ! Merci.
Mais je suis loin d'être au top au niveau programmation. J'ai téléchargé les fichiers, j'ai vu l'exemple en html, mais aucune explication de mise en place :(
Pourquoi 2 fichiers js ? Comment paramétrer les liens de menu (a onclick="AffRubrique('content0','deco0.gif','reader.jpg','','','','');" href="#">Div 1) ?
Idée : mettre les explications dans les 4 div exemples ;)
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 5 juin 2011 à 16:40
Merçi pour l'encouragement nicocoooo ça fait plaisir
nicocoooo
Messages postés1Date d'inscriptiondimanche 30 janvier 2011StatutMembreDernière intervention24 mai 2011 24 mai 2011 à 21:00
Très utile
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 19 avril 2011 à 15:59
Daccord, en réaction j'ai aussi été un peu trop sec !
J'aurais du préciser: Je préfere déclarer les variables GLOBALES en début de script surtout dans une application de plusieurs miliers de lignes et avec un grand nombre de fonctions car sinon cela devient tres difficile de retrouver les variables déclarées implicitement globales dans une fonction quelconque.
Je ne voulais évidemment pas dire que TOUTES les variables devaient être globales.
Dans l'exemple joint il y avait au départ plusieurs autres fonctions et aussi une dizaine de Divs.
J'ai supprimé une partie du code html et javascript qui étaient supperflus ici.
J'aurais aussi du supprimer les globales inutiles mais avec l'age je suis devenu tres distrait.
Encore une chose ce sujet qui ne mérite pas une source a quand même été vu 930 fois et téléchargé 122 fois.
Si j'ai pu faire plaisir à 122 visiteurs en 4 jours je suis content.
Merci pour les remarques.
Jacques
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 18 avril 2011 à 16:42
Jacques,
Sauf ton respect, declarer *toutes* les variables en global n'est *jamais* une bonne idee.
Ca fonctionne a peu pres parce que tu as quelques dizaines de lignes de code. Dans une application de plusieurs miliers de lignes, ca devient tout simplement impossible.
De plus, entre declarer une variable en global et ne pas la declarer, ca ne fait aucune difference en Javascript.
Si je peux te donner un conseil, c'est :
- Toujours declarer en variables locales a tes fonctions les variables que tu n'utilises pas dans les autres fonctions.
- Eviter d'utiliser les variables globales, sauf quand c'est vraiment necessaire (par exemple pour partager une valeur entre plusieurs fonctions).
Bon, d'accord ca fait 2 conseils :o)
Desole d'avoir ete un peu sec dans mon premier commentaire, mais je pense qu'il est important de ne pas encourager (surtout aupres des debutants) ce genre de pratiques.
Apres tout, le but de poster son code c'est aussi de recevoir des remarques constructives.
Eric
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 18 avril 2011 à 14:24
Bonjour,
Chacun son avis.
Je respecte le votre mais moi je trouve préferable de toujours déclarer les variables en début de script, cela évite souvent des problèmes par après surtout aux débutants.
Jacques
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 18 avril 2011 à 11:02
Bonjour,
Je trouve un peu exagere le niveau initie. Surtout que le code contient pas mal de maladresses, comme (entre autre) declarer toutes les variables en global.
Le seul cas ou ce serait interessant d'avoir une variable globale etant de cacher les couteux appels a getElement, mais ce n'est pas fait...
Une autre remarque, la fonction getElement est inutilement couteuse. document.getElementById() est supporte depuis IE5 et sur toutes les versions de Firefox, Chrome, Safari, et opera (pour Opera, je ne suis pas sur du "toutes" mais c'est sans doute supporte sur celles de ces 10 dernieres annees).
Bref, le code pour supporter les 0.000001% de personnes utilisants IE 4 ou Netscape 4 est totalement inutile (pour rappels, ces deux browsers ont ete remplaces par des nouvelles versions (supportant document.getElementById()) respectivement en 1999 et 1998)...
Evidemment, quand on enleve tout ca, il ne reste rien, mais peut-etre que ce sujet ne necessite pas une source...
Eric
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 15 avril 2011 à 17:06
Merci et encore toutes mes excuses. La distraction c'est pas toujours marrant !
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 15 avril 2011 à 16:20
tadaaa
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 15 avril 2011 à 15:50
Est-il possible de le supprimer sur VBFrance ?
lecurieux41
Messages postés23Date d'inscriptiondimanche 11 octobre 2009StatutMembreDernière intervention26 mars 2011 15 avril 2011 à 15:48
Désolé je n'étais en effet pas sur le bon site !
merçi
NikatorS
Messages postés147Date d'inscriptionmercredi 18 septembre 2002StatutMembreDernière intervention15 avril 2011 15 avril 2011 à 15:24
Attention lecurieux41, tu as posté sur VB France et ton code est en javascript.
7 juin 2011 à 20:22
Merçi beaucoup du renseignement, je ne manquerai pas de suivre ton conseil.
Jacques
7 juin 2011 à 19:11
Si tu veux trouver des exemples de Javascript contemporain, le plus simple est de regarder les tutoriaux de librairies comme PrototypeJS ou JQuery.
En effet, de nos jours plus personne ne fait du Javascript "de base" sauf pour certains projets particuliers.
Le gros avantage de ces librairies est de se charger de l'interopérabilité entre les différents navigateurs, tout en offrant des fonctions de haut niveau pour gérer les cas les plus courants.
Par exemple, avec PrototypeJS pour modifier le contenu d'une div, ça donnerait ca :
<script type="text/javascript>
$("maDiv").update("Je suis un contenu dynamique !");
</script>
Si tu parles anglais, tu peux aussi t'inscrire aux mailing lists d'aide à Javascript. Même si tu ne postes pas de messages, cést très instructif de lire les problèmes rencontrés par les autres, et les solutions proposées.
Eric
7 juin 2011 à 18:51
Apres examen à tête reposée, il est bien évident que mon code bien que fonctionnant tres bien, contenait beaucoup de globales totalement inutiles puisqu'il n'y a ici qu'une seule fonction ce qui n'était pas le cas dans le script original.
Tout cela est maintenant rectifié et beaucoup plus clair.
J'ai toujours travaillé très vite mais je n'ai plus l'âge et dorénavent je prendrai le temps qu'il faudra.
Merçi pour les conseils et les remarques, il n'est jamais trop tard pour apprendre.
7 juin 2011 à 17:27
manquants dans le code html.
Copier/coller ça va plus vite mais on peut se tromper et comme l'affichage était bon je ne l'ai pas vu.
Maintenant c'est W3C nickel !
7 juin 2011 à 17:22
7 juin 2011 à 15:58
Désolé si je n'ai pas été assez clair.
Ce qui me console c'est qu'obsolète ou non ça fonctionne très bien.
Je cherche beaucoup sur Internet et suis curieux (évidemment) de savoir ou trouver ces fameuses nouvelles fonctions qui font tout plus "proprement"
Merci
7 juin 2011 à 15:50
je voulais dire "global" bien sur :)
7 juin 2011 à 15:43
quant aux déclarations des variables... première semaine de cours dans n'importe quelle école qui aborde la programmation : chaque variable doit être déclarée à sa juste portée, ni plus ni moins. tout déclarer en global est une faute de programmation. la plupart des débutants estiment qu'il est plus simple de tout déclarer en local, c'est une réaction naturelle qu'on a tous eu. Maintenant il faut savoir écouter les gens qui ont de l'expérience dans un domaine.
Bon courage
7 juin 2011 à 15:30
Pouvez-vous avoir la gentillesse de me faire savoir quelles sont mes mauvaises pratiques et en quoi j'induit les débutants en erreur car ce n'est pas du tout dans mes intentions
Merçi d'avance
7 juin 2011 à 15:26
Pour répondre à tes questions, le fichier js ddaccordion ne sert qu'au fonctionnement du menu de gauche avec lequel on modifie les affichages. Ce menu n'est pas de moi mais provient de Dynamic Drive et il fallait bien un menu pour illustrer le fonctionnement.
Pour le parametrage il y a une ewplication dans le code du menu sur la page html.
-- image 1= Left 1055 Top 180 image 2= Left 1070 Top 560 (positions par défaut) Arguments= contenu,image1,image2,left1,top1,left2,top2-->
les positions par défaut des illustrations à droite
concernent l'affichage présent sur l'écran à l'ouverture de la page.
Les arguments: content0 est le nom du div à afficher quand on clique sur ce bouton du menu.
ensuite la source de l'image 1 ou rien s'il n'y a pas d'image.
La source de l'image 2 ou rien s'il n'y a pas d'image.
les 4 derniers parametres concernent la position de ces 2 images top image 1,left image 1 - top image 2,left image 2 ou bien sur rien s'il n'y a pas d'image à afficher avec ce div. Utiles si les images à afficher sont de dimensions différentes.
J'espère avoir été plus clair.
6 juin 2011 à 12:10
elle induit trop de débutants en erreur quant aux bonnes pratiques
6 juin 2011 à 12:07
Mais je suis loin d'être au top au niveau programmation. J'ai téléchargé les fichiers, j'ai vu l'exemple en html, mais aucune explication de mise en place :(
Pourquoi 2 fichiers js ? Comment paramétrer les liens de menu (a onclick="AffRubrique('content0','deco0.gif','reader.jpg','','','','');" href="#">Div 1) ?
Idée : mettre les explications dans les 4 div exemples ;)
5 juin 2011 à 16:40
24 mai 2011 à 21:00
19 avril 2011 à 15:59
J'aurais du préciser: Je préfere déclarer les variables GLOBALES en début de script surtout dans une application de plusieurs miliers de lignes et avec un grand nombre de fonctions car sinon cela devient tres difficile de retrouver les variables déclarées implicitement globales dans une fonction quelconque.
Je ne voulais évidemment pas dire que TOUTES les variables devaient être globales.
Dans l'exemple joint il y avait au départ plusieurs autres fonctions et aussi une dizaine de Divs.
J'ai supprimé une partie du code html et javascript qui étaient supperflus ici.
J'aurais aussi du supprimer les globales inutiles mais avec l'age je suis devenu tres distrait.
Encore une chose ce sujet qui ne mérite pas une source a quand même été vu 930 fois et téléchargé 122 fois.
Si j'ai pu faire plaisir à 122 visiteurs en 4 jours je suis content.
Merci pour les remarques.
Jacques
18 avril 2011 à 16:42
Sauf ton respect, declarer *toutes* les variables en global n'est *jamais* une bonne idee.
Ca fonctionne a peu pres parce que tu as quelques dizaines de lignes de code. Dans une application de plusieurs miliers de lignes, ca devient tout simplement impossible.
De plus, entre declarer une variable en global et ne pas la declarer, ca ne fait aucune difference en Javascript.
Si je peux te donner un conseil, c'est :
- Toujours declarer en variables locales a tes fonctions les variables que tu n'utilises pas dans les autres fonctions.
- Eviter d'utiliser les variables globales, sauf quand c'est vraiment necessaire (par exemple pour partager une valeur entre plusieurs fonctions).
Bon, d'accord ca fait 2 conseils :o)
Desole d'avoir ete un peu sec dans mon premier commentaire, mais je pense qu'il est important de ne pas encourager (surtout aupres des debutants) ce genre de pratiques.
Apres tout, le but de poster son code c'est aussi de recevoir des remarques constructives.
Eric
18 avril 2011 à 14:24
Chacun son avis.
Je respecte le votre mais moi je trouve préferable de toujours déclarer les variables en début de script, cela évite souvent des problèmes par après surtout aux débutants.
Jacques
18 avril 2011 à 11:02
Je trouve un peu exagere le niveau initie. Surtout que le code contient pas mal de maladresses, comme (entre autre) declarer toutes les variables en global.
Le seul cas ou ce serait interessant d'avoir une variable globale etant de cacher les couteux appels a getElement, mais ce n'est pas fait...
Une autre remarque, la fonction getElement est inutilement couteuse. document.getElementById() est supporte depuis IE5 et sur toutes les versions de Firefox, Chrome, Safari, et opera (pour Opera, je ne suis pas sur du "toutes" mais c'est sans doute supporte sur celles de ces 10 dernieres annees).
Bref, le code pour supporter les 0.000001% de personnes utilisants IE 4 ou Netscape 4 est totalement inutile (pour rappels, ces deux browsers ont ete remplaces par des nouvelles versions (supportant document.getElementById()) respectivement en 1999 et 1998)...
Evidemment, quand on enleve tout ca, il ne reste rien, mais peut-etre que ce sujet ne necessite pas une source...
Eric
15 avril 2011 à 17:06
15 avril 2011 à 16:20
15 avril 2011 à 15:50
15 avril 2011 à 15:48
merçi
15 avril 2011 à 15:24