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 :

Comment modifier du contenu situé dans un autre ?


Sujet :

JavaScript

  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut Comment modifier du contenu situé dans un autre ?
    Bonjour,

    En complément de cette discussion résolue, j'ai besoin, dans la même fonction, de modifier le texte d'un lien pour chaque message dont on masque les commentaires.

    Je reprends et complète la structure de la liste de messages donnée dans l'autre discussion citée :
    Code html : 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
    <div class="divMessage">
      <div id="blocMessage44" class="blocMessage">
        le message 44
        <a href="javascript:afficheCommentaires(des variables);">N commentaires</a>
      </div>
      <div id="sousMessage44" class="sousMessage">
      </div>
    </div>
    <div class="divMessage">
      <div id="blocMessage24" class="blocMessage">
         le message 24
        <a href="javascript:masqueCommentaires(des variables);">Masquer commentaires</a>
      </div>
      <div id="sousMessage24" class="sousMessage">
         les réponses au message 24
      </div>
    </div>
    <div class="divMessage">
      <div id="blocMessage5" class="blocMessage">
         le message 5
        <a href="javascript:masqueCommentaires(des variables);">Masquer commentaires</a>
      </div>
      <div id="sousMessage5" class="sousMessage">
         les réponses au message 5
      </div>
    </div>

    Il s'agit donc de remettre à "N commentaires" le lien "Masquer commentaires" et de modifier la fonction javascript appelée.

    Je pensais donc faire un $(".divMessage").each(function() puis de faire ces opérations dans cette unique boucle mais je ne sais pas comment faire référence aux balises internes par rapport à this.

    Avec le code ci-dessous, j'alerte bien le contenu html de chaque divMessage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$(".divMessage").each(function()
    	{
    		alert($(this).html());
    	});
    Mais ce genre d'appel relatif à this ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$(".divMessage").each(function()
    	{
    		alert($(this).$(".blocMessage").html());
    	});
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert($(".blocMessage", $(this)).html());
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Merci.
    Et donc si je veux seulement le html de la balise <a> qui est dans blocMessage qui est dans this ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert($(".blocMessage a", $(this)).html());
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert($(this).find(".blocMessage a").html());
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Merci encore mais en fait j'ai été imprécis dans ma demande.
    Le lien que je dois modifier est identifié par un id="linkAfficheCommN" où N est le numéro du message.
    J'ai essayé diverses formules pour appeler cet id mais rien n'y fait.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Je progresse un peu...

    Avec le code ci-dessous, j'affiche ce qui est compris entre <a> et </a> pour un message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert($("#blocMessage44 .bar_links #linkAfficheComm44").html());
    Résultat :
    <img src="images/bubble.png" align="absmiddle" height="12px" width="18px">Masquer commentaire
    Je sais modifier "Masquer commentaire" en "1 commentaire" puisque je l'ai fait dans la fonction qui est lancée par le lien "Masquer commentaire".

    Ce que je cherche maintenant, c'est de le faire pour chaque liste de commentaires affichés et donc pour tous les liens "Masquer commentaire(s)" de la page.

    J'y arrive en affectant une classe au lien avec ce 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
    22
    23
    24
    25
    26
    27
    28
    29
    $(".divMessage").each(function()
    	{
    		/*alert($(".blocMessage .bar_links .linkAfficheComm", $(this)).html());*/
    		if($(".blocMessage .bar_links .linkAfficheComm", $(this)).html() !== null)
    		{
    			var obj = $(".blocMessage .bar_links .linkAfficheComm", $(this)); // lien à modifier
    			var inithtm = obj.html(); // contenu complet du lien
    			var initfct = obj.attr("href"); // cible du lien 
    			var texte = '';
     
    			if(langue == 'fr')
    			{
    				texte = 'commentaire';
    			}
    			else if (langue == 'es')
    			{
    				texte = 'comentario';
    			}
    			else if (langue == 'en')
    			{
    				texte = 'comment';
    			}
     
    			obj.attr("href",initfct.replace(/masque/i, "affiche"));
    			obj.html(inithtm.replace(obj.text(), texte));
     
    		}
     
    	});
    Mais il faut que je récupère le nombre de commentaires que je mets dans un input hidden et je trouve un peu stupide d'y affecter une classe qui est plutôt pour du CSS. Le problème, c'est que je n'arrive pas à trouver la bonne syntaxe pour récupérer le contenu du lien via son id au lieu de sa classe.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/08/2014, 13h18
  2. Réponses: 10
    Dernier message: 29/07/2014, 15h44
  3. Réponses: 11
    Dernier message: 12/09/2012, 16h25
  4. Réponses: 4
    Dernier message: 22/05/2010, 15h14
  5. [VBA-E] Comment accéder à une variable tableau située dans un autre module
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/02/2007, 13h15

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