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

Problème d'externalisation d'évènement onclick [Js] - HTML/CSS - Programmation

Marsh Posté le 09-05-2006 à 13:00:19    

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
Reply

Marsh Posté le 09-05-2006 à 13:00:19   

Reply

Marsh Posté le 09-05-2006 à 13:06:02    

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


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 09-05-2006 à 13:12:16    

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à  :??:

Reply

Marsh Posté le 09-05-2006 à 13:15:28    

show me teh code


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 09-05-2006 à 13:28:49    

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

Reply

Marsh Posté le 09-05-2006 à 16:33:17    

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).

Reply

Marsh Posté le 09-05-2006 à 16:36:28    

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.

Reply

Marsh Posté le 09-05-2006 à 16:42:03    

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

Reply

Marsh Posté le 09-05-2006 à 17:00:09    

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.

Reply

Marsh Posté le 09-05-2006 à 17:17:37    

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]

Reply

Marsh Posté le 09-05-2006 à 17:17:37   

Reply

Marsh Posté le 09-05-2006 à 18:03:19    

[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 :)

Reply

Marsh Posté le 18-12-2008 à 13:41:56    

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]

Reply

Marsh Posté le 18-12-2008 à 14:01:55    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed