Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2802 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Différence entre <a href="javascript:toto()"> et <a onClick="..."> ??

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Différence entre <a href="javascript:toto()"> et <a onClick="..."> ??

n°1382293
Ricco
Retour au pays
Posté le 06-06-2006 à 18:06:47  profilanswer
 

Salut,  
 
déja quel est la plus correcte des deux ?
 
Mon but est de créer des boutons en html javascript. J évite le <a href="#" onClick="javascript:toto()" > car cela fait remonter l assenceur.
 
J ai commencé sur mon site à passer à <a href="javascript:toto()"> pour beneficier du :hover sous IE mais le comportement me semble différent <a onclick="javascript:toto()"> que j utilisais avant. Certaines fonctions où je passais des this ou des id en parametres fonctionnent avec onClick mais pas avec href. Est-ce un problème connu ? Comment y remedier ?


Message édité par Ricco le 06-06-2006 à 18:09:09

---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
mood
Publicité
Posté le 06-06-2006 à 18:06:47  profilanswer
 

n°1382300
Ricco
Retour au pays
Posté le 06-06-2006 à 18:23:17  profilanswer
 

Voila en fait, si je fais <a onClick="javascript:toto( this )" >test</a>
Je peux bien manipuler l'element a du bouton, et si je change onClick par href ça ne fonctionne plus. Enfin la fonction javascript est bien appelé mais le this ne semble plus correspondre à ce que je veux :-\


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1382311
xtof_83
Freeride Spirit
Posté le 06-06-2006 à 18:45:22  profilanswer
 

:o :o :o :o :o :o  
 
20.000 fois on le voit ce topik  
 

Code :
  1. <a href="#" onclick="javascript:tunousfaischier();return false;">bye bye</a>


 
Et un lien à tjrs un href que tu le veuille ou non  :fou:  :fou:

n°1382314
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-06-2006 à 18:53:47  profilanswer
 

xtof_83 a écrit :

:o :o :o :o :o :o  
 
20.000 fois on le voit ce topik  
 
[quotemsg=1382311,3,132174]

Code :
  1. <a href="#" onclick="javascript:tunousfaischier();return false;">bye bye</a>



Le mieux étant encore de mettre dans le href un lien vers une page indiquant que le javascript est obligatoire, car le # à une autre signification
 

xtof_83 a écrit :

Et un lien à tjrs un href que tu le veuille ou non  :fou:  :fou:


Ah bon? ça sort d'ou ça?
 

n°1382320
xtof_83
Freeride Spirit
Posté le 06-06-2006 à 19:02:04  profilanswer
 

anapajari a écrit :

Le mieux étant encore de mettre dans le href un lien vers une page indiquant que le javascript est obligatoire, car le # à une autre signification


 
ouais je sais :D
 

anapajari a écrit :


Ah bon? ça sort d'ou ça?


 
Me suis laisser emporté, mais dans son désolé, on peu pas, ne pas le mettre....
 
EDIT: Et puis à quoi ça servirais un <a>rien</a>
 
 :heink:

Message cité 1 fois
Message édité par xtof_83 le 06-06-2006 à 19:05:24
n°1382515
Ricco
Retour au pays
Posté le 07-06-2006 à 00:45:04  profilanswer
 

xtof_83 a écrit :

:o :o :o :o :o :o  
 
20.000 fois on le voit ce topik  
 

Code :
  1. <a href="#" onclick="javascript:tunousfaischier();return false;">bye bye</a>


 
Et un lien à tjrs un href que tu le veuille ou non  :fou:  :fou:


 
Enfin bon, moi aussi je peux sortir les  :o T'as pas l'impression d'être à côté de la plaque ??
 
A part me copier/coller du w3c, tu pourrais m'expliquer pourquoi un  

Code :
  1. <a href="javascript:toto(this);" ></a>

ne fait pas du tout la même chose qu'un

Code :
  1. <a href="#" onclick="javascript:toto(this);return false;"></a>

alors ??


Message édité par Ricco le 07-06-2006 à 00:49:00

---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1382517
masklinn
í dag viðrar vel til loftárása
Posté le 07-06-2006 à 00:56:01  profilanswer
 

onclick="javascript:toto(this);return false;"
 
WTF [:petrus dei]
 
onclick="toto(this);return false;"
svpmerssi
 
Et les deux font strictement la même chose chez moi (et sont quasiment aussi mauvais l'un que l'autre, la 2e version étant la moins pire)

anapajari a écrit :

Le mieux étant encore de mettre dans le href un lien vers une page indiquant que le javascript est obligatoire


Ce qui n'est jamais le cas

anapajari a écrit :

car le # à une autre signification


Autre que quoi?

anapajari a écrit :

Ah bon? ça sort d'ou ça?


De l'implémentation de certains navigateurs.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1382519
Ricco
Retour au pays
Posté le 07-06-2006 à 01:25:06  profilanswer
 

masklinn a écrit :

onclick="javascript:toto(this);return false;"
 
WTF [:petrus dei]
 
onclick="toto(this);return false;"
 
Ok merci, j'y vois plus clair dans ce qu'il faut écrire pour avoir ce que je veux ...
 
svpmerssi
 
Et les deux font strictement la même chose chez moi (et sont quasiment aussi mauvais l'un que l'autre, la 2e version étant la moins pire)
 


 
Bein en passant par le OnClick, en passant le this en paramètre, je peux acceder ensuite dans la fonction à l'objet DOM, pour recuperer son pere, ses frere etc... En remplaçant juste onClick par href la fonction est bien appelée mais javascript crash lors de l'accès à a_link.parentNode, élément non définit, le a-link étant le nom du this, le <a /> dans la fonction.  


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1382535
masklinn
í dag viðrar vel til loftárása
Posté le 07-06-2006 à 08:33:04  profilanswer
 

ah... euh... ouais ptet, de toute façon faut pas mettre de javascript dans le href et faut pas utiliser le pseudo-protocole "javascript:"


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1382567
Ricco
Retour au pays
Posté le 07-06-2006 à 09:32:35  profilanswer
 

Code :
  1. <a href="javascript:alert(this.tagName);" > test1 </a>   <br/>
  2. <a href="#" onClick="alert(this.tagName);return false;"> test2 </a>


 
Le 2ieme donne bien le bon résultat, enfin celui que j'attends mais pas le premier ...


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
mood
Publicité
Posté le 07-06-2006 à 09:32:35  profilanswer
 

n°1382576
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-06-2006 à 09:41:02  profilanswer
 

masklinn a écrit :

Ce qui n'est jamais le cas


Jamais jamais ... c'est vite dit :o J'aurais pu dire "un lien vers un traitement equivalent coté serveur"...
 

masklinn a écrit :

Autre que quoi?


Tout le monde utilise le # en pensant qu'il est l'équivalent de "pas de lien", ce qui n'est pas le cas.
 

masklinn a écrit :

De l'implémentation de certains navigateurs.


C'est l'implémentation des navigateurs qui décide maintenant ???
Et puis c'est nawak quand même, puisque les ancres sont gérées par tous les navigateurs et donc:

Code :
  1. <a name="pouet">poueeet</a>


ne comprends pas de href et fonctionne partout [:spamafote]
 

Ricco a écrit :

Code :
  1. <a href="javascript:alert(this.tagName);" > test1 </a>   <br/>
  2. <a href="#" onClick="alert(this.tagName);return false;"> test2 </a>


Le 2ieme donne bien le bon résultat, enfin celui que j'attends mais pas le premier ...


C'est on ne peut plus normal, il n'y a qu'avec la deuxieme méthode ou tu "attrapes" l'evenement "clic". Grace à cet evenement, tu peux savoir quel est l'objet qui fut cliqué.

Message cité 2 fois
Message édité par anapajari le 07-06-2006 à 09:45:18
n°1382596
j_lecruel
☀ ☁ ☂
Posté le 07-06-2006 à 10:03:02  profilanswer
 

anapajari a écrit :


Code :
  1. <a name="pouet">poueeet</a>


ne comprends pas de href et fonctionne partout [:spamafote]


 
 
Sauf que cette méthode tend à disparaitre, étant donné qu'on peut aire la même chose en filant tout simplement un id à l'élément vers lequel on souhaite pointer, on évite ainsi de créer un élément pour rien.


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
n°1382642
xtof_83
Freeride Spirit
Posté le 07-06-2006 à 10:41:46  profilanswer
 

j_lecruel a écrit :

Sauf que cette méthode tend à disparaitre, étant donné qu'on peut aire la même chose en filant tout simplement un id à l'élément vers lequel on souhaite pointer, on évite ainsi de créer un élément pour rien.


 
 
+1 [:chris94]

n°1382692
masklinn
í dag viðrar vel til loftárása
Posté le 07-06-2006 à 11:17:47  profilanswer
 

anapajari a écrit :

Et puis c'est nawak quand même, puisque les ancres sont gérées par tous les navigateurs et donc:

Code :
  1. <a name="pouet">poueeet</a>


ne comprends pas de href et fonctionne partout [:spamafote]


Les ancres c'est nawak [:itm]
 
Elles n'ont pas de sens au niveau de la page et sont donc dépréciée (d'ailleurs je te ferais remarquer que l'attribut name sur les éléments A est déprécié) au profit d'un id signifiant sur un élément quelconque


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1382695
Hermes le ​Messager
Breton Quiétiste
Posté le 07-06-2006 à 11:19:37  profilanswer
 

anapajari a écrit :

Le mieux étant encore de mettre dans le href un lien vers une page indiquant que le javascript est obligatoire, car le # à une autre signification
 
 
Ah bon? ça sort d'ou ça?


 
putain +1 tiens.
 
Et raz-le-bol de voir des mecs qui se la jouent spécialistes des standards ici ou là sur le net avec du javascript dans les liens ou encore des #.  :o  :jap:  

n°1382711
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-06-2006 à 11:28:55  profilanswer
 

j_lecruel a écrit :

Sauf que cette méthode tend à disparaitre, étant donné qu'on peut aire la même chose en filant tout simplement un id à l'élément vers lequel on souhaite pointer, on évite ainsi de créer un élément pour rien.


Oui mais bon c'est dans la recommandation HTML4.01, c'est pas moi qui l'invente!!!
J'ai pas dit que c'était à utiliser, mais c'était un example de lien sans href, supporté par tous les navigateurs.
 

masklinn a écrit :

Les ancres c'est nawak [:itm]
Elles n'ont pas de sens au niveau de la page et sont donc dépréciée (d'ailleurs je te ferais remarquer que l'attribut name sur les éléments A est déprécié) au profit d'un id signifiant sur un élément quelconque


Que ça soit nawak ou pas c'est un autre problème...  
Mais j'aimerais bien savoir d'ou tu sors que c'est déprécié, si je prends la recommandation HTML4.01( lire la) rien ne le précise.
 
Mon seul propos était de contre-dire le fait que les href étaient obligatoires dans les balises A.
 
Et puis de toute façon, aucune des deux solutions présentées pour ajouter la gestion du clic n'est vraiment idéale à mon sens. Le mieux de de setter la gestion des evenements en js, genre:

Code :
  1. document.getElementById('unId').onclick = function (event){ ...}


Comme ça pour les visiteurs ayant le js désactivé, il ne se passe strictement rien [:spamafote]
 

n°1382731
masklinn
í dag viðrar vel til loftárása
Posté le 07-06-2006 à 11:40:15  profilanswer
 

Hermes le Messager a écrit :

Et raz-le-bol de voir des mecs qui se la jouent spécialistes des standards ici ou là sur le net avec du javascript dans les liens ou encore des #.  :o  :jap:


Là je suis bien d'accord :jap:
 
Mais pour faire des micro-demos d'une page j'ai un peu de mal à utiliser des vrais liens perso :/
 
Et j'utiliserais bien le "pas de href" pour les liens générés dynamiquement (créations de menus), pas de bol dans 2 navigateurs sur 3 le lien n'est pas interprété comme un lien \o/


Message édité par masklinn le 07-06-2006 à 11:43:28

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1391272
gravastar_​bureau
vive la mise en page en tab...
Posté le 20-06-2006 à 11:24:42  profilanswer
 

anapajari a écrit :

Et puis de toute façon, aucune des deux solutions présentées pour ajouter la gestion du clic n'est vraiment idéale à mon sens. Le mieux de de setter la gestion des evenements en js, genre:

Code :
  1. document.getElementById('unId').onclick = function (event){ ...}


Comme ça pour les visiteurs ayant le js désactivé, il ne se passe strictement rien [:spamafote]


 
Une petite question par rapport à ça :  je me suis dit que c'était effectivement plus propre de séparer la gestion des évènements du contenu de la page. Mais apparemment, je n'ai pas dû tout bien comprendre. J'ai fait un test type hello world :

Code :
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. <!--
  5. document.getElementById('helloworld').onClick = alert('hello world');
  6. -->
  7. </script>
  8. </head>
  9. <body>
  10. <img src="helloworld.gif" id="helloworld" />
  11. </body>
  12. </html>


 
Et ça ne marche pas.. je me suis alors dit que ça devait venir du fait que l'évènement onClick ne fonctionnait pas avec une image (on ne sait jamais) et j'ai donc remplacé l'image par une ancre. C'est là que ça a commencé à m'embrouiller :

Code :
  1. <a href="" id="helloworld">hello world</a>


fonctionne avec FF (mais pas avec IE) (je sais qu'un href vide est une aberration, mais quand on tatonne..), mais le alert se lance aussi au chargement de la page

Code :
  1. <a href="#" id="helloworld">hello world</a>


par contre ne fonctionne pas et le alert se lance encore une fois au chargement au chargement.
 
Vous auriez peut être un lien où je pourrais trouver des explications concernant la gestion des évènements séparée ?

n°1391306
masklinn
í dag viðrar vel til loftárása
Posté le 20-06-2006 à 11:48:03  profilanswer
 

gravastar_bureau a écrit :

Une petite question par rapport à ça :  je me suis dit que c'était effectivement plus propre de séparer la gestion des évènements du contenu de la page. Mais apparemment, je n'ai pas dû tout bien comprendre. J'ai fait un test type hello world :

Code :
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. <!--
  5. document.getElementById('helloworld').onClick = alert('hello world');
  6. -->
  7. </script>
  8. </head>
  9. <body>
  10. <img src="helloworld.gif" id="helloworld" />
  11. </body>
  12. </html>



Nan mais faudrait te demander ce que fait ton code ptet, parce que là je sais pas si tu te rends compte (apparement non) mais ton JS s'exécute directement au moment où il est rencontré.
 
En d'autres termes, ton JS s'exécute alors que l'image existe pas encore, donc il tourne un peu dans le vide... d'ailleurs il devrait provoquer au mieux des warnings au pire des erreurs dans tous les navigateurs
 
Accessoirement t'as écrit n'importe quoi:

  • onclick pas onClick, le javascript est case sensitive merci
  • onclick est une fonction, on lui donne donc une fonction, là tu lui donnes ce que retourne "alert('hello world');", c'est stupide
  • Comme je l'ai souligné au dessus, tu essaies de récupérer l'élément img#helloworld alors qu'il n'existe pas encore.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1391347
gravastar_​bureau
vive la mise en page en tab...
Posté le 20-06-2006 à 12:10:05  profilanswer
 

masklinn a écrit :

Nan mais faudrait te demander ce que fait ton code ptet, parce que là je sais pas si tu te rends compte (apparement non) mais ton JS s'exécute directement au moment où il est rencontré.
 
En d'autres termes, ton JS s'exécute alors que l'image existe pas encore, donc il tourne un peu dans le vide... d'ailleurs il devrait provoquer au mieux des warnings au pire des erreurs dans tous les navigateurs
 
Accessoirement t'as écrit n'importe quoi:

  • onclick pas onClick, le javascript est case sensitive merci
  • onclick est une fonction, on lui donne donc une fonction, là tu lui donnes ce que retourne "alert('hello world');", c'est stupide
  • Comme je l'ai souligné au dessus, tu essaies de récupérer l'élément img#helloworld alors qu'il n'existe pas encore.


Alors pour répondre à ta question, je m'en rendais un peu compte, mais insérer une balise script au milieu du code html ne correspond pas trop à ce que j'aurais voulu faire (c'est peut être - sans doute même - débile, mais j'aurais aimé pouvoir séparé  nettement le javascript de l'html).
 
Et au risque de paraître encore plus idiot (si c'est encore possible), alert n'est-il pas considéré comme une fonction ?

n°1391351
masklinn
í dag viðrar vel til loftárása
Posté le 20-06-2006 à 12:12:56  profilanswer
 

gravastar_bureau a écrit :

Alors pour répondre à ta question, je m'en rendais un peu compte, mais insérer une balise script au milieu du code html ne correspond pas trop à ce que j'aurais voulu faire (c'est peut être - sans doute même - débile, mais j'aurais aimé pouvoir séparé  nettement le javascript de l'html).


Je vois pas le problème, ya des handlers faits spécialement pour pouvoir exécuter tes scripts après la fin du chargement de la page, genre window.onload

gravastar_bureau a écrit :

Et au risque de paraître encore plus idiot (si c'est encore possible), alert n'est-il pas considéré comme une fonction ?


alert oui, alert('foo') sûrement pas [:pingouino]
 
L'un est une fonction (et 'retourne' donc la fonction), l'autre est un appel de fonction (et retourne donc le résultat de l'appel de la fonction)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1391362
FlorentG
Posté le 20-06-2006 à 12:33:56  profilanswer
 

Bon, ça suffit. Arrêtez de faire vos clampins et de pondre du JS de merde :o
 
Etape 1 : rendez-vous sur http://developer.yahoo.com/yui/index.html et chopper la librairie Yahoo UI
Etape 2 : choppez dedans les fichier yui\build\yahoo\yahoo-min.js et yui\build\event\event-min.js
Etape 3 : référencez les deux fichiers dans le head
Etape 4 : faites-vous un script d'init qui définira l'event handler pour le a en question :
 

YAHOO.util.Event.addListener('helloworld', 'click', pouet);
 
function pouet(e) {
  alert('Hello World!' + this.href);
  YAHOO.util.Event.stopEvent(e);
}


La lib yahoo event gère en plus l'attachment deferal, à savoir que si l'élément avec l'id spécifié n'existe pas encore, la librairie check à interval régulier jusqu'au window.onload, à la recherche de l'élément -> plus besoin de se faire chier avec le onload. Le premier paramètre d'addListener prend aussi en paramètre une collection d'éléments. Y'a aussi correction automatique du scope, à savoir que this dans l'événement va faire référence à l'objet à l'origine de l'événement, y compris sous IE. Pareil pour la variable e, qui correspond à un objet évènement.

n°1391365
FlorentG
Posté le 20-06-2006 à 12:38:24  profilanswer
 

Sinon pour revenir à la différence entre :

<a href="javascript: window.open('pouet.html')">pouet</a>


et

<a href="pouet.html" onclick="window.open(this.href); return false;">pouet</a>


 
Essayer d'ouvrir le premier lien dans une nouvelle fenêtre [:dawa] Essayer de faire référencer pouet.html par google [:dawa]

n°1391369
gravastar_​bureau
vive la mise en page en tab...
Posté le 20-06-2006 à 12:44:25  profilanswer
 

FlorentG a écrit :

Bon, ça suffit. Arrêtez de faire vos clampins et de pondre du JS de merde :o
 
Etape 1 : rendez-vous sur http://developer.yahoo.com/yui/index.html et chopper la librairie Yahoo UI
Etape 2 : choppez dedans les fichier yui\build\yahoo\yahoo-min.js et yui\build\event\event-min.js
Etape 3 : référencez les deux fichiers dans le head
Etape 4 : faites-vous un script d'init qui définira l'event handler pour le a en question :
 

YAHOO.util.Event.addListener('helloworld', 'click', pouet);
 
function pouet(e) {
  alert('Hello World!' + this.href);
  YAHOO.util.Event.stopEvent(e);
}


La lib yahoo event gère en plus l'attachment deferal, à savoir que si l'élément avec l'id spécifié n'existe pas encore, la librairie check à interval régulier jusqu'au window.onload, à la recherche de l'élément -> plus besoin de se faire chier avec le onload. Le premier paramètre d'addListener prend aussi en paramètre une collection d'éléments. Y'a aussi correction automatique du scope, à savoir que this dans l'événement va faire référence à l'objet à l'origine de l'événement, y compris sous IE. Pareil pour la variable e, qui correspond à un objet évènement.


 
Merci bien pour la librairie :)
 
Par contre, je n'arrêterais pas de pondre du js de merde :
1/ parce que sinon je m'embête
2/ parce que si on n'essaie pas, on n'apprend pas
3/ parce que j'aime pas les gens grossiers  :p

n°1391387
Ricco
Retour au pays
Posté le 20-06-2006 à 13:12:06  profilanswer
 

Même si force est de constater qu'on peut se permettre d'être grossier quand on est le plus meilleur de l'univers quand même.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1609995
PtiMalin
Posté le 10-09-2007 à 11:49:22  profilanswer
 

La solution est peut-être :
<a href="javascript:void(0);" onClick="javascript:toto()" > qui ne rechargera pas la page et ne déplacera pas l'ascenceur.
 
 :)

n°1609997
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-09-2007 à 11:53:12  profilanswer
 

Euh [:w3c compliant]
Qu'est ce que c'est que ce up des 15 mois pour nous pondre un truc toupabo ???

n°1610148
FlorentG
Posté le 10-09-2007 à 16:25:00  profilanswer
 

PtiMalin a écrit :

La solution est peut-être :
<a href="javascript:void(0);" onClick="javascript:toto()" > qui ne rechargera pas la page et ne déplacera pas l'ascenceur.
 
 :)


Surtout pas, malheureux

n°1610164
MagicBuzz
Posté le 10-09-2007 à 17:00:29  profilanswer
 

xtof_83 a écrit :


 
ouais je sais :D
 


 

xtof_83 a écrit :


 
Me suis laisser emporté, mais dans son désolé, on peu pas, ne pas le mettre....
 
EDIT: Et puis à quoi ça servirais un <a>rien</a>
 
 :heink:


<a name="toto">a</a>
 
ça peut être utile des fois :spamafote:

n°1610166
MagicBuzz
Posté le 10-09-2007 à 17:02:12  profilanswer
 

ah ouais c'est quoi ce up ?
 
pis d'abors, faut pas mettre de onclick sur le <a>.
faut faire un script associé à la balise, ça évite de coller des trucs pourris partout dans ton code, et ça le rend plus portable.

n°1610167
MagicBuzz
Posté le 10-09-2007 à 17:05:07  profilanswer
 

Code :
  1. <html>
  2.  <head>
  3.    <title>plop</title>
  4.    <script type="text/javascript">
  5.      window.onload = Load;
  6.      function Load() {
  7.        var monA = document.getElementById("monA" );
  8.        if (monA) {
  9.          monA.onclick = Plop;
  10.        }
  11.      }
  12.      function Plop() {
  13.        alert("plop" );
  14.        return false;
  15.      }
  16.    </script>
  17.  </head>
  18.  <body>
  19.    <p>
  20.      <a href="nojs.htm" id="monA">click</a>
  21.    </p>
  22.  </body>
  23. </html>


edit : (en qui marche :D)


Message édité par MagicBuzz le 10-09-2007 à 17:20:58
n°1610548
Berceker U​nited
PSN : berceker_united
Posté le 11-09-2007 à 11:38:37  profilanswer
 

masklinn a écrit :


Nan mais faudrait te demander ce que fait ton code ptet, parce que là je sais pas si tu te rends compte (apparement non) mais ton JS s'exécute directement au moment où il est rencontré.
 
En d'autres termes, ton JS s'exécute alors que l'image existe pas encore, donc il tourne un peu dans le vide... d'ailleurs il devrait provoquer au mieux des warnings au pire des erreurs dans tous les navigateurs
 
Accessoirement t'as écrit n'importe quoi:

  • onclick pas onClick, le javascript est case sensitive merci
  • onclick est une fonction, on lui donne donc une fonction, là tu lui donnes ce que retourne "alert('hello world');", c'est stupide
  • Comme je l'ai souligné au dessus, tu essaies de récupérer l'élément img#helloworld alors qu'il n'existe pas encore.

Depuis quand le javascript est case sensitive sur onclick ?  :??:

n°1610561
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-09-2007 à 11:55:58  profilanswer
 

toujours [:w3c compliant]
Mais ce n'est pas le cas de l'attribut html onclick.


Message édité par anapajari le 11-09-2007 à 11:56:09
n°1610597
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-09-2007 à 13:53:34  profilanswer
 

non ce que dit Masklinn est 100% véridique.
Le javascript indiqué dans l'exemple s'éxecute au moment ou il est reçu par le navigateur et non une fois la page entièrement chargée ( dans le head ou pas ça change rien).
Un petit exemple facile à mettre en oeuvre, dans le head tu balourdes:

Code :
  1. alert(document.getElementById('A')==undefined);
  2.   window.onload = function (){
  3.     alert(document.getElementById('A')==undefined);
  4.   }


et tu verras bien ce qui se passe :)

 

EDIT: MAGICBUZZ CA SE FAIT PAS DE SUPPRIMER LES POSTS OU ON DIT DES CONNERIES :o

Message cité 1 fois
Message édité par anapajari le 11-09-2007 à 13:54:11
n°1610606
MagicBuzz
Posté le 11-09-2007 à 14:05:43  profilanswer
 

anapajari a écrit :

non ce que dit Masklinn est 100% véridique.
Le javascript indiqué dans l'exemple s'éxecute au moment ou il est reçu par le navigateur et non une fois la page entièrement chargée ( dans le head ou pas ça change rien).
Un petit exemple facile à mettre en oeuvre, dans le head tu balourdes:

Code :
  1. alert(document.getElementById('A')==undefined);
  2.   window.onload = function (){
  3.     alert(document.getElementById('A')==undefined);
  4.   }


et tu verras bien ce qui se passe :)
 
EDIT: MAGICBUZZ CA SE FAIT PAS DE SUPPRIMER LES POSTS OU ON DIT DES CONNERIES :o


j'ai supprimé avant que tu répondes, me rendant compte qu'effectivement j'avais dit un truc pas vrai :D
 
en fait c'est le "window.onload" qui attend gentillement, et moi je fais toujours un window.onload = Init() qui s'occupe de faire tout le reste en début de page, et window est un objet qui existe avant la création de l'oeuf :D mais ensuite l'event n'est levé qu'une fois... la page chargée :) (cf mon exemple par exemple)


Message édité par MagicBuzz le 11-09-2007 à 14:07:18
n°1610732
gatsu35
Blablaté par Harko
Posté le 11-09-2007 à 17:47:28  profilanswer
 

window.onload = Init()  <==== là je sais pas si tu te rend comptes mais tu Executes Init() en mettant les ();
il faut juste passer init en tant que référence :
window.onload = Init


Message édité par gatsu35 le 11-09-2007 à 17:48:14
n°1610733
TheRom_S
Posté le 11-09-2007 à 17:56:16  profilanswer
 

oui bah comme dans son exemple quoi ...
faudrait arrêter de chipoter sur des abus de langage, sinon on va croire que c'est rempli de nerds ce forum


---------------
The Rom's, à votre service
n°1611640
MagicBuzz
Posté le 14-09-2007 à 12:27:14  profilanswer
 

Merci TheRom_s :jap:
 
Gatsu35 > Ca doit faire 4 ou 5 ans que je ne fais plus de JS, ou très ponctuellement, j'ai un peu perdu l'habitude de la syntaxe ;) Mais mon exemple est testé et marche, donc c'est à lui qu'il faut faire confiance... :p Si tu crois encore tout ce que je raconte :o

n°1611641
gatsu35
Blablaté par Harko
Posté le 14-09-2007 à 12:31:37  profilanswer
 

MagicBuzz a écrit :

Merci TheRom_s :jap:
 
Gatsu35 > Ca doit faire 4 ou 5 ans que je ne fais plus de JS, ou très ponctuellement, j'ai un peu perdu l'habitude de la syntaxe ;) Mais mon exemple est testé et marche, donc c'est à lui qu'il faut faire confiance... :p Si tu crois encore tout ce que je raconte :o


Mais tu es sur que tu sais programmer ?
 
faire :

Code :
  1. window.onload = init();


revient à mettre la valeur de retour de init() dans window.onload, donc window.onload sera du type "null" si init() ne retourne rien.
Ce que tu dois faire c'est ne pas mettre les guillemets, ou bien faire en sorte que init retourne une fonction

n°1611654
MagicBuzz
Posté le 14-09-2007 à 13:36:37  profilanswer
 

regarde mon exemple bordel :o
http://forum.hardware.fr/forum2.ph [...] 0#t1610167
 
j'ai écrit cette ligne "à la va-vite", sans faire attention à ce que j'écrivais.
 
et savoir écrire :

Code :
  1. window.onload = init;


 
C'est loin d'être une preuve de connaissances en programmation.
Vas-y l'affectation de handler à un event ! Affecter un handler à un event, c'est une ineptie totale.
 
On associe, on affecte pas. Déjà le += du C#, je trouve ça limite barbare, mais le = tout court, c'est stupide (et hyper limité). On préfèreras utiliser la fonction myEvent.addHandler(ptrHandler)


Message édité par MagicBuzz le 14-09-2007 à 13:41:54
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Différence entre <a href="javascript:toto()"> et <a onClick="..."> ??

 

Sujets relatifs
Nvu ne fait pas la différence entre " et ' ??Difference entre | et || en C++
onclick et transmettre une variablecomment appliquer une CSS en fonction d'une condition javascript?
probleme banniere javascript[Javascript] popup blocké à cause de fonction confirm
XML et JavaScript dans le navigateurBesoin d'aide pour les listes déroulantes et javascript
[Javascript] Lien HTML en blank[PHP/Javascript]
Plus de sujets relatifs à : Différence entre <a href="javascript:toto()"> et <a onClick="..."> ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR