IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Pb d'affichage d'une image à la volée, choisie dans une liste déroulante


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Pb d'affichage d'une image à la volée, choisie dans une liste déroulante
    Bonjour,

    j'ai un petit pb, j'ai un programme PHP qui liste des images d'un répertoire, il affiche le nom des images dans une liste déroulante, jusque là rien d'extra. Lorsque l'utilisateur choisit dans la liste déroulante une image, je souhaiterai que celle-ci soit affichée à la volée en dessous, d'où l'utilisation de la fonction OnChange dans la balise select.

    Mais lorsque j'essaie le test, il ne se passe rien. Je suis novice en Javascript.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <html><body><form name="form1" method="post" action="">
      <label> Liste des fichiers pr&eacute;sents dans le r&eacute;pertoire de destination (Images) : <br>
      <select name="choix" id="choix" OnChange="document.getElementById("pic").src = 'images/' + document.getElementById("choix").options[document.getElementById("choix").selectedIndex].value;">
    <option value=""></option>
    <?php
    $rep = opendir("images");
    while(false !== ($fichier = readdir($rep)))
    {
            if($fichier != "." && $fichier != "..")
            {
            echo "<option value=\"".$fichier."\">".$fichier."</option>";
        }
    }
    closedir($dir);
    ?>
      </select>
      </label>
      <img src="images/defaut.jpg" name="pic"/>
    </form>
    </body>
    </html>
    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    A première vue ça a l'air correct...
    Faudrait peut être passer par une fonction plutôt que de mettre ton code dans le onChange.
    C'est plus "propre" et ça permet de faire des "alert();" pour faire des tests.

    Sinon bah essaie déjà de mettre onChange voire onchange à la place de OnChange. Jpense qu'il y a un problème de casse.

  3. #3
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Y'a un problème d'imbrication de guillemets. Tu utilises les doubles
    guillemets pour délimiter la valeur de l'attribut onchange. Tu devrais
    utiliser que des simple guillemets dans la valeur.

    Fait comme Angelseb a dit... soit une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function changeImage(liste) {
      var v = liste.options[liste.selectedIndex].value;
      document.getElementById("pic").src = 'images/' + v;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <select onchange="changeImage(this);">
    ...
    </select>
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses Ca marche niquel maintenant.

    J'ai également changé le code et fait appel à une fonction. Une autre question par contre :

    Est-ce possible de ne rien afficher lorsque l'utilisateur affiche la page la 1ère fois?

    Je veux dire, dans mon code actuel, j'ai mis une image par défaut lors de l'affichage de la page, mais je voudrais ne pas avoir d'image par défaut, lorsque l'utilisateur n'a pas encore sélectionné une image dans la liste ou lorsqu'il n'y a pas encore d'images dans le répertoire.

    EDIT:
    Voilà j'ai trouvé! Mais d'abord une autre question :
    dans ma 1ère version du code, j'ai utilisé la méthode getElementById alors que j'avais définis un nom (name="pic") et non un id, est-ce qu'il serait alors plus correcte d'utiliser la méthode getElementByName alors?

    Voici mon code pour ceux que ça intéresserait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <html>
    <head>
    <script type="text/javascript">
    <!--
    function changeImage(liste)
    {
    var v = liste.options[liste.selectedIndex].value;
    if(v == "defaut")
    {
    	document.getElementById('pic').style.visibility = "hidden";
    }
    else
    {
    	document.getElementById('pic').style.visibility = "";
    	document.getElementById('pic').src = 'images/' + v;
    }
    }
     
    function tester(liste)
    {
    	if(liste == "defaut")
    	{
    		document.getElementById('pic').style.visibility = "hidden";
    	}
    }
    -->
    </script>
    </head>
     
    <body onload="tester(document.getElementById('choix').options[document.getElementById('choix').selectedIndex].value);" >
     
    <form name="form1" method="post" action="">
      <label> Liste des fichiers pr&eacute;sents dans le r&eacute;pertoire de destination (Images) : <br>
      <select name="choix" onchange="changeImage(this);">
     
    <option value="defaut"></option>
    <?php
    $rep = opendir("images");
    while(false !== ($fichier = readdir($rep)))
    {
            if($fichier != "." && $fichier != "..")
            {
            echo "<option value=\"".$fichier."\">".$fichier."</option>";
        }
    }
    closedir($dir);
    ?>
      </select>
      <br><br>
      <img src="images/defaut.jpg" name="pic" id="pic"/>
      </label>
    </form>
    </body>
    </html>

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par Angelseb
    Est-ce possible de ne rien afficher lorsque l'utilisateur affiche la page la 1ère fois?
    Oui, tu mets un attribut style='visibility: hidden' à ta balise img. Ensuite, dans ta
    fonction tu modifies le style ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('pic').style.visibility = 'visible';
    Citation Envoyé par Angelseb
    Voilà j'ai trouvé! Mais d'abord une autre question :
    dans ma 1ère version du code, j'ai utilisé la méthode getElementById alors que j'avais définis un nom (name="pic") et non un id, est-ce qu'il serait alors plus correcte d'utiliser la méthode getElementByName alors?
    Si la fonction getElementByName existait... peut-être Dis moi si je me trompe.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par marcha
    Si la fonction getElementByName existait...
    Pourquoi ce conditionnel ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par E.Bzz
    Pourquoi ce conditionnel ?

    A+
    getElementsByName() retourne un tableau d'éléments DOM, car il peut exister
    plusieurs éléments qui portent le même nom

    C'est pourquoi la fonction getElementByName() n'existe pas. (au singulier)

    Contrairement à getElementById() qui ne peut retourner qu'un élément, c'est
    pourquoi elle est au singulier.

    On pourrait donc utiliser getElementsByName() pour retrouver l'élément
    désiré mais il faudrait alors extraire le premier élément du tableau retourné.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Ah oui, c'est sûr que pour utiliser une fonction prédéfinie faut s'adapter à son fonctionnement ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

Discussions similaires

  1. [PHP 4] Affichage d'une image avec chemin contenu dans une variable
    Par terrysharp dans le forum Langage
    Réponses: 1
    Dernier message: 16/07/2009, 14h54
  2. Générer une image et l'afficher dans une page web
    Par Rodrigue dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 13/10/2007, 19h32
  3. Réponses: 1
    Dernier message: 02/11/2006, 09h25
  4. n'affiche pas une image arriere plan definis dans une CSS
    Par mikebranque dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 30/06/2006, 15h54
  5. inserer une image et du texte dans une Jlist
    Par cellestion dans le forum Composants
    Réponses: 4
    Dernier message: 03/03/2006, 23h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo