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

jQuery Discussion :

Remplacer un mot par une image


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut Remplacer un mot par une image
    Bonjour à tous,

    Je cherche avec jQuery à afficher une image lorsque certains mots sont affichés dans mon tableau HTML.

    Exemple :

    <td>voiture</td> (au lieu d'afficher le mot voiture, jQuery doit afficher l'image voiture.png)

    <td>velo</td> (au lieu d'afficher le mot velo, jQuery doit afficher l'image velo.png)

    <td>camion</td> (au lieu d'afficher le mot camion, jQuery doit afficher l'image camion.png)

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Je n'ai pas testé, mais on peut mettre une classe au tag TD, par exemple <td class="showImg">voiture</td>.

    $( ".showImg" ).html( '<img src="' + $( this ).text() + '.png">' );.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Comment faire pour initialiser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $( ".showImg" ).html( '<img src="' + $( this ).text() + '.png">' );.
    ?

    Merci d'avance

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Mais comme d'habitude :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $( function(){ // forme abrégée de $(document).ready(function(){
     
        $( ".showImg" ).html( '<img src="' + $( this ).text() + '.png">' );.
     
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup, ça marche parfaitement !

    Encore une petite question, comment appliquer "str.toLowerCase" à +$(this).text()+ ?

    EDIT : Enfin, non, ça ne marche pas, ça affiche toutes les données HTML du code source au lieu d'afficher l'image.

    Merci encore

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    $( this ).text().toLowerCase().

    Bien entendu $( this ).text() ramène tout le texte existant dans le tag TD. On peut utiliser un attribut data-*.

    <td class="showImg" data-img-src="voiture.png"> </td>.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $( function(){ // forme abrégée de $(document).ready(function(){
     
        $( ".showImg" ).append( '<img src="' + $( this ).data( "imgSrc" ) + '">' );
     
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta réponse, ton code affiche ceci pour les urls des images http://www.monsite.com/images/undefined

  8. #8
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bien entendu, je ne connais pas l'URL vers vos images, il faut adapter la solution à la structure de vos dossiers.

    Par exemple : <td class="showImg" data-img-src="http://danielhagnoul.developpez.com/images/imageTest.png"> </td>.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Bonjour Daniel,

    J'avais bien compris ;-)

    Justement, j'utilise votre code comme il se doit et l'URL de l'image devient "http://www.monsite.com/images/undefined".

  10. #10
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    La magie n'existe pas, il y a donc forcément un bout de code quelque part qui change l'URL.

    Une option dans un plugin ?

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Bonjour Daniel,

    Tu peux tester ce code HTML, tu verras par toi même ;-)

    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
     
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>imageTest</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript">$(function(){$( ".showImg" ).append( '<img src="http://danielhagnoul.developpez.com/images/' + $( this ).data( "imgSrc" ) + '">' );});</script>
    </head>
    <body>
    <table width="200" border="1">
    <tr>
    <td class="showImg" data-img-src="imageTest.png"></td>
    </tr>
    </table>
    </body>
    </html>
    Merci d'avance

  12. #12
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    "Mea culpa, mea culpa, mea maxima culpa" !

    Une erreur de débutant !

    Voilà le genre d'erreur qu'on laisse facilement passé lorsqu'on ne teste pas. Ici "this" c'est le document.

    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
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>imageTest</title>
    	<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    	<script>
    		$(function(){
    			var jObjImg = $( ".showImg" );
     
    			jObjImg.append( '<img src="http://danielhagnoul.developpez.com/images/' + jObjImg.data( "imgSrc" ) + '">' );
    		});
    	</script>
    </head>
    <body>
    	<table width="200" border="1">
    		<tr>
    			<td class="showImg" data-img-src="imageTest.png"></td>
    		</tr>
    	</table>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Merci Daniel pour ta réponse et pour ton aide, ça marche ;-)

    En revanche, il y a un petit Bug, j'ai plusieurs images différentes dans ce tableau, et c'est toujours la même image qui est affichée. De plus, comment pourrais-je supprimer le texte dans le <td class="showImg" data-img-src="imageTest.png">Info image test</td> ?

    Merci d'avance

  14. #14
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Pour plusieurs TD avec cette classe, le même traitement dans une méthode each() :

    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
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>imageTest</title>
    	<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    	<script>
    		$(function(){
     
    			$( ".showImg" ).each( function( i, item ){
    				$( item ).append( '<img src="http://danielhagnoul.developpez.com/images/' + $( item ).data( "imgSrc" ) + '">' );
    			});
     
    		});
    	</script>
    </head>
    <body>
    	<table width="200" border="1">
    		<tr>
    			<td class="showImg" data-img-src="imageTest.png"></td>
    		</tr>
    		<tr>
    			<td class="showImg" data-img-src="avatarDVJH.jpg"></td>
    		</tr>
    		<tr>
    			<td class="showImg" data-img-src="julia2.png"></td>
    		</tr>
    	</table>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Merci ça marche parfaitement, juste une dernière question après je ne t’embête plus

    Comment pourrais-je supprimer le texte dans le <td class="showImg" data-img-src="imageTest.png">Info image test</td> ?

  16. #16
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    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
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>imageTest</title>
    	<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    	<script>
    		$(function(){
     
    			$( ".showImg" ).each( function( i, item ){
     
                                    // html() remplace le contenu, empty() vide le contenu, append() ajoute au contenu
     
    				$( item ).html( '<img src="http://danielhagnoul.developpez.com/images/' + $( item ).data( "imgSrc" ) + '">' );
    			});
     
    		});
    	</script>
    </head>
    <body>
    	<table width="200" border="1">
    		<tr>
    			<td class="showImg" data-img-src="imageTest.png"></td>
    		</tr>
    		<tr>
    			<td class="showImg" data-img-src="avatarDVJH.jpg"></td>
    		</tr>
    		<tr>
    			<td class="showImg" data-img-src="julia2.png"></td>
    		</tr>
    	</table>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Daniel, merci beaucoup pour ton aide

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Bonjour Daniel,

    Je reviens vers toi, car j'ai un petit soucis, en effet, j'utilise ExcellentExport.js pour exporter mon tableau au format CSV. Lors de l'export, le texte dans <td class="showImg" data-img-src="imageTest.png">Info image test</td> ne s'exporte plus.

    ExcellentExport.js : https://github.com/jmaister/excellentexport

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Bonjour,

    Je viens de voir ce message et me demandais si il était vraiment nécessaire d'utiliser du JavaScript pour obtenir ce résultat ...

    Est-ce qu'un on vieux IMG/ALT n'aurait pas fait l'affaire lors de la génération du HTML ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="http://www.monsite.com/images/voiture.png" alt="voiture" />
    Si l'image n'existe pas alors on voit le texte.


    devYan.


    devYan.

  20. #20
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par Steufa Voir le message
    Bonjour Daniel,

    Je reviens vers toi, car j'ai un petit soucis, en effet, j'utilise ExcellentExport.js pour exporter mon tableau au format CSV. Lors de l'export, le texte dans <td class="showImg" data-img-src="imageTest.png">Info image test</td> ne s'exporte plus.

    ExcellentExport.js : https://github.com/jmaister/excellentexport
    Normal puisqu'il n'est plus présent après l'exécution de la commande de remplacement : $( item ).html( ... );

    Si ExcellentExport.js exporte les textes masqués tu peux essayer de remplacer la ligne de code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $( item ).wrapInner('<div class="display-none" />').append( '<img src="http://danielhagnoul.developpez.com/images/' + $( item ).data( "imgSrc" ) + '">' );
    En ajoutant également la déclaration CSS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .display-none {display:none}

    devYan.


    devYan.

Discussions similaires

  1. Remplacer un bouton par une image
    Par The_Haunted dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 08/10/2008, 14h19
  2. Remplacer le curseur par une image
    Par CyberTwister dans le forum Windows
    Réponses: 2
    Dernier message: 10/05/2007, 20h31
  3. Remplacer du texte par une image en css
    Par Seth77 dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 03/04/2006, 11h57
  4. Remplacer un caractère par une image
    Par mr.t dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 27/10/2005, 09h18
  5. Réponses: 2
    Dernier message: 26/07/2005, 21h44

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