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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Js]Problème d'externalisation d'évènement onclick

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Js]Problème d'externalisation d'évènement onclick

n°1362304
Djebel1
Nul professionnel
Posté le 09-05-2006 à 13:00:19  profilanswer
 

Hello, je veux externaliser les évènements js pour pas merder mon xhtml, comme expliqué ici par exemple : http://pompage.net/pompe/separation/
Mais y a un truc que je capte pas. Un exemple tout con :  
Si j'ai un bouton radion comme ca  

Code :
  1. <input type="radio" id="test" value="1" />


Je veux un evenement onclick pour ce bouton radio.
Dans mon fichier js je peux par exemple faire (j'ai des fonctions d'initialisation à l'évènement onload, là je simplifie)

Code :
  1. window.onload = function() {
  2.     document.getElementById('test').onclick = alert('test');
  3. }


Le souci, l'alerte s'affiche au chargement de la page, et pas du tout quand je clique sur le bouton. Aucune erreur dans la console javascript de firefox. Où est-ce que je merde ?
 
Edit : je viens de m'apercevoir que tout fonctionnait bien si je lançais une fonction sans parametre. Par exemple

Code :
  1. window.onload = function() {
  2.     document.getElementById('test').onclick = fonction_test;
  3. }
  4. function fonction_test()
  5. {
  6.     alert('test');
  7. }


Mais si je veu passer un paramètre à ma fonction fonction_test, je fais comment ?


Message édité par Djebel1 le 09-05-2006 à 13:07:30
mood
Publicité
Posté le 09-05-2006 à 13:00:19  profilanswer
 

n°1362313
boulax
Inserer phrase hype en anglais
Posté le 09-05-2006 à 13:06:02  profilanswer
 

document.getElementById('test').onclick = new Function() { alert('test');}


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1362317
Djebel1
Nul professionnel
Posté le 09-05-2006 à 13:12:16  profilanswer
 

boulax a écrit :

document.getElementById('test').onclick = new Function() { alert('test');}


ça change pas le problème : l'évènement a lieu au chargement de la page, et non à l'évènement onclick.
Dès lors que j'utilise une fonction avec paramètre, ça marche pas. Si y a pas de paramètres, ça marche. Je capte pas là  :??:

n°1362319
boulax
Inserer phrase hype en anglais
Posté le 09-05-2006 à 13:15:28  profilanswer
 

show me teh code


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1362328
Djebel1
Nul professionnel
Posté le 09-05-2006 à 13:28:49  profilanswer
 

le même qu'avant avec ta modif.

Code :
  1. <input type="radio" id="test" value="1" />


et le js

Code :
  1. window.onload = function() {
  2.      document.getElementById('test').onclick =  new Function() { alert('test');}
  3. }


 
J'ai contourné le problème en utilisant une fonction sans paramètre, et dans la dite fonction je récupère la valeur qui m'intéresse avec this.
Donc ça marche mais je comprends pas pkoi on a pas le droit de mettre des paramètres oO

n°1362562
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-05-2006 à 16:33:17  profilanswer
 

A la syntaxe

Code :
  1. document.getElementById('test').onclick =  new Function() { alert('test');}


Je préfère largement

Code :
  1. document.getElementById('test').onclick =  function(event) { alert('test');}


C'est une question d'habitude mais au moins tu peux récuperer l'event facilement.
 
Après tu peux tout a fait mettre des paramètres à la fonction il faut juste comprendre que l'appel n'est pas fait par ton objet window mais bien par ton objet input ( et c'est pour ça que le this dans la fonction pointe sur l'input et pas la window).

n°1362567
Djebel1
Nul professionnel
Posté le 09-05-2006 à 16:36:28  profilanswer
 

oki, mais quand je mets un paramètre (toujours avec le code précédent), ça marche pas :/
Quand j'en mets pas, ça marche.

n°1362572
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-05-2006 à 16:42:03  profilanswer
 

tu peux montrer le code de ta fonction avec paramètre stp!!!

n°1362596
Djebel1
Nul professionnel
Posté le 09-05-2006 à 17:00:09  profilanswer
 

bah c'est inutile, c'est exactement comme le code que j'ai mis plus haut avec "alert". Mais je le remets avec une fonction, pour l'exemple.
Bon le code de l'input c'est toujours le même.
le js :  

Code :
  1. window.onload = function() {
  2.      document.getElementById('test').onclick =  new Function() { sketuveux('bidule');}
  3. }
  4. function sketuveux(truc)
  5. {
  6.     alert(truc);
  7. }


Donc là, ça m'affiche l'alerte au chargement de la page, pas quand je clique. Mais avec :  

Code :
  1. window.onload = function() {
  2.      document.getElementById('test').onclick =  new Function() { sketuveux;}
  3. }
  4. function sketuveux()
  5. {
  6.     alert('letestquirox');
  7. }


Bah là ca fonctionne, pas d'alerte au chargement, alerte quand tu cliques.

n°1362614
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-05-2006 à 17:17:37  profilanswer
 

Tiens avec ce code ça marche:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6.   <title>Exemple</title>
  7.   <script type="text/javascript">
  8.   function init(){
  9.     document.getElementById('inp').onclick = function(event){test('blablabal');};
  10.   }
  11.   function test(txt){
  12.     alert(txt);
  13.   }
  14.   </script>
  15. </head>
  16. <body onload="init()">
  17.   <input type="button" id="inp" value="test"/>
  18. </body>
  19. </html>


[A mon avis]
C'est normal avec la syntaxe que tu utilises ça ne marche pas.
En gros tu dois passer un pointeur sur le code de ta fonction qui est ensuite interpréter par ton objet Function. Et dans ce cas les paramètre s tu peux oublier... :o
[/A mon avis]

mood
Publicité
Posté le 09-05-2006 à 17:17:37  profilanswer
 

n°1362673
Djebel1
Nul professionnel
Posté le 09-05-2006 à 18:03:19  profilanswer
 

[mode gros boulet ON]
l'erreur venait simplement d'un oubli de point virgule après le function(event){test('blablabal');}
[/mode]
Merci de votre aide :)

n°1828965
Alisteroid
Posté le 18-12-2008 à 13:41:56  profilanswer
 

Mais qu'est ce que tu m'raconte  [:voodoo chile]  
T'as jamais écris même pas une ligne de code  [:voodoo chile]  
On calotte nous  [:voodoo chile]

n°1828972
FlorentG
Posté le 18-12-2008 à 14:01:55  profilanswer
 

Pas de spam merci, surtout dans un topic qui a deux ans :/ Et vu l'image qu'on a de l'Outsourcing...


Aller à :
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Js]Problème d'externalisation d'évènement onclick

 

Sujets relatifs
[JS] probleme pr instancier une objetprobleme : Select d'une requette MYSQL
ORACLE 9i : problème ISO 2Probleme avec les caractères accentués en ut-8(sql)
problème d'affichage avec preg_matchProbleme affiche de mon site sous FireFox
problème de bouton...Problème pour envoyer un mail (JavaMail)
Problème avec les packages...(PASCAL) Rotation d'un volume, big probleme!!!
Plus de sujets relatifs à : [Js]Problème d'externalisation d'évènement onclick


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