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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Diaporama ne fonctionne pas -

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Diaporama ne fonctionne pas -

n°1543351
Dede86
Posté le 16-04-2007 à 15:05:10  profilanswer
 

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>  

mood
Publicité
Posté le 16-04-2007 à 15:05:10  profilanswer
 

n°1543358
anapajari
s/travail/glanding on hfr/gs;
Posté le 16-04-2007 à 15:15:02  profilanswer
 

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
n°1543361
Dede86
Posté le 16-04-2007 à 15:20:25  profilanswer
 

Merci beaucoup.
 
Cela fonctionne parfaitement !
 
Au revoir

n°1543452
Dede86
Posté le 16-04-2007 à 18:41:09  profilanswer
 

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

n°1543464
anapajari
s/travail/glanding on hfr/gs;
Posté le 16-04-2007 à 18:59:35  profilanswer
 

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

n°1543471
anapajari
s/travail/glanding on hfr/gs;
Posté le 16-04-2007 à 19:07:17  profilanswer
 

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
n°1543480
Dede86
Posté le 16-04-2007 à 19:16:28  profilanswer
 

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.

n°1543483
Dede86
Posté le 16-04-2007 à 19:17:24  profilanswer
 

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.

n°1543844
Dede86
Posté le 17-04-2007 à 15:39:37  profilanswer
 

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
n°1543847
Pablo Escr​obarbe
Retour d'exil
Posté le 17-04-2007 à 15:48:30  profilanswer
 

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.

mood
Publicité
Posté le 17-04-2007 à 15:48:30  profilanswer
 

n°1543849
Dede86
Posté le 17-04-2007 à 15:52:40  profilanswer
 

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 ?

n°1543851
Pablo Escr​obarbe
Retour d'exil
Posté le 17-04-2007 à 15:55:39  profilanswer
 

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

n°1543852
Dede86
Posté le 17-04-2007 à 15:57:11  profilanswer
 

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

n°1543853
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-04-2007 à 15:57:40  profilanswer
 

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
n°1543854
Dede86
Posté le 17-04-2007 à 15:59:22  profilanswer
 

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

n°1543857
Dede86
Posté le 17-04-2007 à 16:01:50  profilanswer
 

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

n°1543859
xtof_83
Freeride Spirit
Posté le 17-04-2007 à 16:03:43  profilanswer
 

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
n°1543861
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-04-2007 à 16:05:46  profilanswer
 

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
n°1543868
Dede86
Posté le 17-04-2007 à 16:17:26  profilanswer
 

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.

n°1543869
xtof_83
Freeride Spirit
Posté le 17-04-2007 à 16:23:47  profilanswer
 

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

n°1543870
Dede86
Posté le 17-04-2007 à 16:27:41  profilanswer
 

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

n°1543872
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-04-2007 à 16:30:18  profilanswer
 

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
n°1543873
Pablo Escr​obarbe
Retour d'exil
Posté le 17-04-2007 à 16:31:47  profilanswer
 

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

n°1543910
xtof_83
Freeride Spirit
Posté le 17-04-2007 à 17:18:37  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


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

  Diaporama ne fonctionne pas -

 

Sujets relatifs
[Javascript] Mon chronomètre ne fonctionne pasupload d'images qi ne fonctionne pas
[Crypto] Probleme dans ce programme?[résolu] scriptaculous qui fonctionne sous IE mais pas firefox ?
Preg replace : ne fonctionne que pour une seule ligneUpload d'images : jpg->jpg fonctionne mais pas gif->jpg
document.body.clientHeight ne fonctionne pas sous IEscript qui fonctionne 1 fois sur 2, aidez moi ! :(
[javascript] parent.location fonctionne pas bienshutdown ne fonctionne pas dans un batch?
Plus de sujets relatifs à : Diaporama ne fonctionne pas -


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