Diaporama ne fonctionne pas -

Diaporama ne fonctionne pas - - HTML/CSS - Programmation

Marsh Posté le 16-04-2007 à 15:05:10    

Bonjour,
 
J'ai fait un diaporama en Javascript qui ne fonctionne pas. Ce diaporama possède juste un bouton suivant (c'est un essai). Losque l'utilisateur appuie sur le bouton, l'image s'incrémente (mes images portent le nom : 1, 2, 3... donc je n'ai pas fait de tableaux d'images mais j'ai crée une fonction qui incrémente le nom de l'image pour pouvoir l'afficher).
 
J'utilise le navigateur Firefox 2 et lorsque je regarde dans la console
d'erreur ce que ne va pas, il y a un message : i n'est pas définit.
 
Pouvez-vous jeter un oeil à mon code ?
 
<html>
  <head>
   <title>Diapo</title>
    <script language="JavaScript">
     
      function affiche(numero)  
       {  
        i = numero;
        image.src = i+'.jpg';
       }
    </script>
 
  </head>
 <body>
  <img src="1.jpg" name="image">
  <input type="button" value=">" OnClick="affiche(i+1);" >  
 </body>
</html>  

Reply

Marsh Posté le 16-04-2007 à 15:05:10   

Reply

Marsh Posté le 16-04-2007 à 15:15:02    

Code :
  1. <script type="text/javascript">
  2.      var numero = 1;
  3.       function affiche() { 
  4.         document.getElementById('image').src = (++numero)+'.jpg';
  5.      }
  6. </script>
  7. ...
  8. <img src="1.jpg" id="image"/>
  9. <input type="button" value=">" OnClick="affiche()" />


Message édité par anapajari le 16-04-2007 à 15:15:18
Reply

Marsh Posté le 16-04-2007 à 15:20:25    

Merci beaucoup.
 
Cela fonctionne parfaitement !
 
Au revoir

Reply

Marsh Posté le 16-04-2007 à 18:41:09    

Re Bonjour,
 
En fait, ce n'ai pas exactement ce que je voulais faire.
 
Je voudrais passer en paramètre la valeur de mon image +1 quand j'appuie sur le bouton suivant. Comme ça la fonction va afficher le numéro de l'image suivante (ce qui a été envoyé en paramètre).
 
Pouvez-vous regarder mon code svp (du 1er post), c'est ce que je voulais faire mais ça ne fonctionne pas.
 
Merci

Reply

Marsh Posté le 16-04-2007 à 18:59:35    

Tu ne pourras pas faire de la façon demandée en pur js.
Le problème est que la fonction est appelée lors de l'evenement sur le click d'un bouton. Or ce bouton n'a aucun moyen de connaitre le "paramètre suivant".
Et de toute façon ça n'aurait pas d'intérêt. [:spamafote]
D'ou l'idée ( de feignant certes mais toute à fait fonctionnelle) de passer par une variable globale qui s'incrémente.  
Et rien ne t'empêche de te servir de la variable numero ailleurs ( enfin après l'affectation de src, sinon tu aura en fait numéro-1)
 
Pour ma culture, tu peux m'expliquer d'ou provient l'obligation de passer un paramètre à cette fonction???

Reply

Marsh Posté le 16-04-2007 à 19:07:17    

remarque tu peux utiliser ta fonction plus une variable globale, ça marchera très bien et ça sera peut-être plus proche de la syntaxe que tu esperais

Code :
  1. <script language="JavaScript">   
  2.       var i = 1;
  3.       function affiche(numero){ 
  4.         i = numero;
  5.         image.src = i+'.jpg';
  6.        }
  7.     </script>
  8. ...
  9.   <img src="1.jpg" id="image"/>
  10.   <input type="button" value="&gt;" onclick="affiche(i+1)"/>


Mais je comprends toujours pas l'intérêt... :o


Message édité par anapajari le 16-04-2007 à 19:07:54
Reply

Marsh Posté le 16-04-2007 à 19:16:28    

Salut,
 
En fait je voulais envoyer à la fonction le nom de la photo+1 à la fonction qui va afficher l'image quand j'appuie sur le bouton précédent. Pour le bouton précédent, j'aurai fait le contraire.

Reply

Marsh Posté le 16-04-2007 à 19:17:24    

Grâce à toi, ça marche merci.
 
Mais je dois avouer que j'ai quand même des difficultés à comprendre le code. Je reviendrai demain en parler.
 
Merci de ton aide en tout cas.

Reply

Marsh Posté le 17-04-2007 à 15:39:37    

Bonjour,
 
Il y a quelque chose que je ne comprends pas. Quand j'appele ma fonction, j'envoie i+1, comment le programme connaît-il la position actuelle de i ? Est-ce que c'est grâce au i+.'jpg' qui est affecté à image.src ?
 
Merci d'avance


Message édité par Dede86 le 17-04-2007 à 15:40:43
Reply

Marsh Posté le 17-04-2007 à 15:48:30    

i est une variable initialisée à 1 que tu incrémentes dès que tu cliques sur ton bouton parce que tu passes par la fonction affiche.

Reply

Marsh Posté le 17-04-2007 à 15:48:30   

Reply

Marsh Posté le 17-04-2007 à 15:52:40    

Justement je ne comprends pas comment i est incrémenté puisque on passe i+1 à la fonction mais la variable i déclarée ne bouge pas elle ?

Reply

Marsh Posté le 17-04-2007 à 15:55:39    

function affiche(numero){  
       i = numero;
 
là numero c'est i+1 car tu as onclick="affiche(i+1)"

Reply

Marsh Posté le 17-04-2007 à 15:57:11    

D'accord et quand je clique encore pour afficher le bouton suivant, comment le programme connaît-il la position de i ?

Reply

Marsh Posté le 17-04-2007 à 15:57:40    

moi je comprends toujours pas l'interêt :fou:

 

edit: MAIS TU LUI AFFECTES LA POSITION DU PARAMETRE DE LA FONCTION AFFICHE QUAND TU FAIS

Code :
  1. i = numero;


Si on prends dans l'ordre

  • i vaut 1
  • clique sur le bouton, on passe 1+1 à affiche en paramètre
  • on fait i= 1+1
  • i vaut 2
  • clique sur le bouton, on passe 2+1 à affiche en paramètre
  • on fait i= 2+1
  • i vaut 3



Message édité par anapajari le 17-04-2007 à 15:59:33
Reply

Marsh Posté le 17-04-2007 à 15:59:22    

Je voulais afficher un bouton précédent et un autre suivant. Le bouton suivant envoie en paramètre i-1 à la fonction qui affiche la photo précédente et faire le contraire en appuyant sur le bouton suivant

Reply

Marsh Posté le 17-04-2007 à 16:01:50    

Ah ok d'accord cette fois j'ai compris.
 
Merci de votre patience, je suis débutant.

Reply

Marsh Posté le 17-04-2007 à 16:03:43    

Tu es con ou tu es con :
Donc math niveau 6éme :

 

Tu as :
i=1
lalalala ça tourne
j'envoie i+1 à numero :
numero = 1+1 (on se la joue doucement au début)
numero = 2 (si si je te jure)
et là magie
i = numero (Ben alors vue que numero = 2, i est égal à....oui je te le fais pas dire i = 2, mais non pourquoi tu mens)
Donc i=2
Et là on se là refait une fois, en copier coller bien sur :
-----------
Tu as :
i=2
lalalala ça tourne
j'envoie i+1 à numero :
numero = 2+1 (on se la joue doucement au début)
numero = 3 (si si je te jure, je sais ça devient plus dur que tout à lheure, avec ces gros nombres)
et là magie
i = numero (Ben alors vue que numero = 3, i est égal à....oui je te le fais pas dire i = 3, mais non pourquoi tu mens)

 


Bon tous ça pour dire, je te prend pas pour un débile, mais bon, la programmation, c'est pas magique, ce sont des humains qui ont créés les langages, avec un raisonnement humain.
Donc à part si tu me dis, que tu es en CP, je peux rien faire d'autre pour toi....

 

http://perso.wanadoo.fr/k.fd/HFR/hellokneu.gif

 


EDIT:GRILLED :P


Message édité par xtof_83 le 17-04-2007 à 16:04:13
Reply

Marsh Posté le 17-04-2007 à 16:05:46    

Code :
  1. <script type="text/javascript">
  2.         var numero = 1;
  3.          function affiche(param) { 
  4.            if ( typeof(param) == 'string'){
  5.               numero = param == 'suivant' ? numero + 1 : numero -1;
  6.            } else if ( typeof(param) == 'number'){
  7.               numero = param;
  8.            }
  9.            document.getElementById('image').src = numero+'.jpg';
  10.         }
  11.     </script>
  12.     ...
  13.     <img src="1.jpg" id="image"/>
  14.     <input type="button" value="&gt;" onclick="affiche('suivant')" />
  15.     <input type="button" value="&lt;"  onclick="affiche('precedent')" />
  16.     <input type="button" value="Afficher la photo 12"  onclick="affiche(12)" />


de tête, pas tester ;)
Mais au moment t'as pas besoin de te trimballer ce i dans l'appel d'affiche!


Message édité par anapajari le 17-04-2007 à 16:06:32
Reply

Marsh Posté le 17-04-2007 à 16:17:26    

Non, je ne suis pas totallement débile xtof_83 je te rassure, mais j'ai eu une petite confusion au sujet des variables. En effet, je pensais qu'à l'intérieur d'une fonction, on je pouvais pas faire référence à une variable qui n'était pas déclarée dans cette même fonction.  
C'est pourquoi je ne comprenais pas du tout pourquoi on me parlait de modifier la valeur du i.
 
La confusion est levée, merci à vous.

Reply

Marsh Posté le 17-04-2007 à 16:23:47    

Comme à dis anapajari, on appelle ça une variable globale ;)
Après c'est vrai que ça marche pas comme ça dans tout les langages.

Reply

Marsh Posté le 17-04-2007 à 16:27:41    

C'est par là qu'on aurait du commencer, ça aurait été plus rapide.
 
En tout cas, merci.
 
A+

Reply

Marsh Posté le 17-04-2007 à 16:30:18    

Dede86 a écrit :

C'est par là qu'on aurait du commencer, ça aurait été plus rapide.


anapajari a écrit :

Tu ne pourras pas faire de la façon demandée en pur js.
Le problème est que la fonction est appelée lors de l'evenement sur le click d'un bouton. Or ce bouton n'a aucun moyen de connaitre le "paramètre suivant".
...
D'ou l'idée ( de feignant certes mais toute à fait fonctionnelle) de passer par une variable globale qui s'incrémente.
Et rien ne t'empêche de te servir de la variable numero ailleurs ( enfin après l'affectation de src, sinon tu aura en fait numéro-1)


 :??:  :??:  :??:

 

edit: xtof_83> perso les scopes de variables en js je les trouves "normaux". Global<=>window, après local<=>function(objet) ... :o

 

Message cité 1 fois
Message édité par anapajari le 17-04-2007 à 16:31:34
Reply

Marsh Posté le 17-04-2007 à 16:31:47    

Bah au moins t'essayes de comprendre, c'est l'essentiel je trouve :o

Reply

Marsh Posté le 17-04-2007 à 17:18:37    

anapajari a écrit :


edit: xtof_83> perso les scopes de variables en js je les trouves "normaux". Global<=>window, après local<=>function(objet) ... :o


 
Pas dis le contraire  :)  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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