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 :

Modifier une chaîne de texte affichée par une variable dans 1 div


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Modifier une chaîne de texte affichée par une variable dans 1 div
    Bonjour, à toutes et à tous.

    Mon nouveau problème est de parvenir à afficher une chaîne de texte dans un div, alimentée par la valeur d'une variable, mais sans afficher le 1er et le dernier caractère de cette chaîne, dont la longueur varie selon le texte, qui est la valeur de la variable.

    J'ai trouvé un JS qui marche très bien, mais pour une chaîne de texte précise et citée dans la fonction JS en constance... Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const str = '(The Call of the Wild)';
    console.log(str.substring(1, str.length - 1));
     
    Résultat affiché : The Call of the Wild
    J'ai fait des recherches et tenté plein de choses pendant 2 heures, et, rien à faire, ça ne marche pas...

    Côté page HTML, voici ce que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id='DivTitreOriginal'><script type='text/javascript'>document.write("+mavarialble+");</script></div>
    Explication de ce que j'aimerais obtenir : Ma variable, nommée par exemple "mavariable", a pour valeur, par exemple, " (The Call of the Wild) ". Le but est de faire afficher dans le div " DivTitreOriginal " cette chaîne de texte sans les parenthèses encadrant le titre original (résultat : " The Call of the Wild "), qui sont donc le 1er et le dernier caractère de cette chaîne. Bien sûr, vous me direz sans doute, le plus simple serait de ne pas écrire ces parenthèses, mais, si elles sont là, c'est pour la bonne raison qu'elles sont utiles pour l'affichage de cette variable ailleurs, sur une autre page HTML.

    Ce ne doit pas être impossible... J'espère que quelqu'un pourra m'aider. Merci d'avance à ce sauveur.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    pour changer le contenu d'une balise en javascript, vous pouvez essayer cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const variable_texte = "The Call of the Wild";
     
    // recherche de la balise dans le code html
    const DivTitreOriginal = document.getElementById("DivTitreOriginal");
     
    // modification du contenu
    DivTitreOriginal["textContent"] = variable_texte;
    si vous avez besoin de plus d'aide, donnez nous plus d'explications sur la façon dont circulent les données, qui les utilise, etc.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par mathieu Voir le message
    si vous avez besoin de plus d'aide, donnez nous plus d'explications sur la façon dont circulent les données, qui les utilise, etc.
    Bonjour, Mathieu.

    Pas de souci, voici davantage d'explications. La page HTML, qui contient entre autre le div " DivTitreOriginal ", est affichée après avoir cliqué sur un lien (qui contient une partie de la variable que j'avais surnommée " mavariable " dans mon premier message) d'une précédente page HTML. En fait, cette variable surnommée " mavariable " est une variable à nom variable. Elle est en fait la somme d'une variable commune, sous la forme " 007_2024 " par exemple, et récupérée dans l'URL du lien, ajoutée dans la fonction au texte " TitreOr " (voir le code ci-dessous) pour créer son nom final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var ec=numeroFilm("numerodefilm"); // Valeur "numérodefilm_année" récupérée dans l'URL dans un script précédent.
     
    var to="TitreOr" + ec;
    On se retrouve avec une nouvelle variable (surnommée " mavariable " dans mon exemple et qui est en fait " to ") qui est alors " TitreOr007_2024 " (qui est le nom d'une variable stockée dans la base de données) et se retrouve dans le div " DivTitreOriginal " pour afficher la valeur de cette variable, qui est le titre original " The Call of the Wild ". Sauf que la valeur de cette variable " TitreOr007_2024 ", puisée dans la base de données, est " (The Call of the Wild) ".
    A l'ouverture de cette nouvelle page HTML, après avoir cliqué sur un lien sur une page HTML précédente, il faudrait voir dans le div " DivTitreOriginal " seulement " The Call of the Wild ", pas de parenthèses encadrantes.

    J'ai une solution qui fonctionne pour l'instant, mais lourde à utiliser, d'où ma recherche d'une solution de simplification... et il semble que ce soit finalement un cas plus compliqué qu'il n'y paraît...

    Merci pour votre aide. Bonne journée.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 050
    Points : 44 568
    Points
    44 568
    Par défaut
    Bonjour,
    Citation Envoyé par pat_fr38
    Explication de ce que j'aimerais obtenir : Ma variable, nommée par exemple "mavariable", a pour valeur, par exemple, " (The Call of the Wild) ". Le but est de faire afficher dans le div " DivTitreOriginal " cette chaîne de texte sans les parenthèses encadrant le titre original (résultat : " The Call of the Wild "),
    pas tout compris au micmac

    Pour supprimer les parenthèses ouvrantes et fermantes, en début et fin de phrase, tu peux utiliser la méthode replace avec une regExp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // suppression parenthèses début et fin de phrase uniquement
    const texteBrut = "(The Call of the Wild)";
    const textClear = texteBrut.replace("/^\(|\)$/gm", "");
    // affichage dans la page
    const elemOutput = document.getElementById("DivTitreOriginal");
    elemOutput.textContent =  textClear ;

  5. #5
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,

    pas tout compris au micmac
    Bonjour, NoSmoking.

    Oui, cela se voit que vous n'avez pas compris, puisque vous apportez le même type de solution que Mathieu... Ce titre " The Call of the Wild ", il est variable en fonction de la fiche de film affichée dans cette page HTML, d'où la variable " tor " (je l'ai renommée entre temps, parce que j'ai décidé d'adapter cette solution à toutes les autres variables à nom variable) qui est à nom variable, d'après la valeur (007_2024) récupérée dans l'URL du lien cliqué dans une autre page HTML et associée à l'autre partie commune " TitreOr " pour le résultat, qui peut être " TitreOr007_2024 ", mais aussi " TitreOr073_2023 " etc... selon le film sur le lien duquel on a cliqué pour voir sa fiche.

    Bref, si on appliquait vos solutions, la vôtre ou celle de Mathieu, cela signifierait que, pour tous les films de la base de données, il faille mettre une fonction spécifique au titre original de chacun... Trop lourd, cela va à l'encontre de ce que j'ai réussi à faire : une page unique, qui permet d'afficher la fiche de tous les films avec toutes leurs informations propres données par des variables stockées dans la base de données. Voici le JS qui permet cela, pour bien montrer de quoi il s'agit :

    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
    55
    56
    57
    // Script d'affichage des fiches de film.
     
    function AfficheDetailsFilm()
    {
    var ec=numeroFilm("numerodefilm"); // Valeur "numérodefilm_année", par exemple "007_2024" (le 7ème film vu en 2024), récupérée dans l'URL par un autre script.
    var fvl="FilmVuLe" + ec;
    var ldv="LieuDeVisionnage" + ec;
    var fva="FilmVuAvec" + ec;
    var tfr="TitreFr" + ec;
    var tor="TitreOr" + ec;
    var rur="Realisateur" + ec;
    var cur="Compositeur" + ec;
    var hre="Histoire" + ec;
    var pre="ProduitEn" + ec;
    var sef="SortieEnFranceLe" + ec;
    var dur="Duree" + ec;
    var vuf="Vu" + ec;
    var sga="Saga" + ec;
    var fpo="FilmPossede" + ec;
    var bpo="BOPossedee" + ec;
    var not="Notation" + ec;
    var syn="Synopsis" + ec;
    var cas="Casting" + ec;
    document.write("<p class='Tableau2CelluleAffiche'><img src='images/affiches/"+ec+".jpg' class='AfficheDuFilm'></p>");
    document.write("<p class='Tableau2CelluleFilmVuLe1'>Film vu le</p>");
    document.write("<p class='Tableau2CelluleFilmVuLe2'><script type='text/javascript'>document.write(\"\"+"+fvl+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleLieuDeVisionnage1'><a href=javascript:visibilite('DivVisionnage')>Visionné / Avec</a></p>");
    document.write("<p class='Tableau2CelluleLieuDeVisionnage2'><p class='Tableau2CelluleLieuDeVisionnage3'><script type='text/javascript'>document.write(\"\"+"+ldv+"+\"\");</script></p></p>");
    document.write("<div id=\"DivVisionnage\" style=\"display:none\"><p class=\"Tableau2CelluleLieuDeVisionnage2\"><p class=\"Tableau2CelluleLieuDeVisionnage3\"><script type=\"text/javascript\">document.write(\"\"+"+fva+"+\"\");</script></p></p></div>");
    document.write("<p class='Tableau2CelluleTitre1'><a href=javascript:visibilite('DivTitreOriginal')>Titre / T.original</a></p>");
    document.write("<p class='Tableau2CelluleTitre2'><script type='text/javascript'>document.write(\"\"+"+tfr+"+\"\");</script></p>");
    document.write("<div id='DivTitreOriginal' style='display:none'><script type='text/javascript'>document.write(\"\"+"+tor+"+\"\");</script></div>");
    document.write("<p class='Tableau2CelluleRealisateur1'>Réalisateur(s)</p>");
    document.write("<p class='Tableau2CelluleRealisateur2'><script type='text/javascript'>document.write(\"\"+"+rur+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleCompositeur1'>Compositeur(s)</p>");
    document.write("<p class='Tableau2CelluleCompositeur2'><script type='text/javascript'>document.write(\"\"+"+cur+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleHistoire1'>Histoire<br />Détails</p>");
    document.write("<p class='Tableau2CelluleHistoire2'><script type='text/javascript'>document.write(\"\"+"+hre+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleProduitEn1'>Produit en</p>");
    document.write("<p class='Tableau2CelluleProduitEn2'><script type='text/javascript'>document.write(\"\"+"+pre+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleSortieEnFranceLe1'>Sortie en France le</p>");
    document.write("<p class='Tableau2CelluleSortieEnFranceLe2'><script type='text/javascript'>document.write(\"\"+"+sef+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleDuree1'>Durée</p>");
    document.write("<p class='Tableau2CelluleDuree2'><script type='text/javascript'>document.write(\"\"+"+dur+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleVu1'>Vu</p>");
    document.write("<p class='Tableau2CelluleVu2'><script type='text/javascript'>document.write(\"\"+"+vuf+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleSaga1'>Saga</p>");
    document.write("<p class='Tableau2CelluleSaga2'><script type='text/javascript'>document.write(\"\"+"+sga+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleFilmPossede1'>Film possédé</p>");
    document.write("<p class='Tableau2CelluleFilmPossede2'><script type='text/javascript'>document.write(\"\"+"+fpo+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleBOPossedee1'>BO possédée</p>");
    document.write("<p class='Tableau2CelluleBOPossedee2'><script type='text/javascript'>document.write(\"\"+"+bpo+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleNotation'><script type='text/javascript'>document.write(\"\"+"+not+"+\"\");</script></p>");
    document.write("<p class='Tableau2CelluleSynopsisCasting'><a href=javascript:visibilite('DivCasting')>Synopsis / Casting</a></p>");
    document.write("<p class='Tableau2CelluleDuSynopsis'><script type='text/javascript'>document.write(\"\"+"+syn+"+\"\");</script></p>");
    document.write("<div id='DivCasting' style='display:none'><script type='text/javascript'>document.write(\"\"+"+cas+"+\"\");</script></div>");
    }
    Quant à la page HTML qui affiche la fiche de film, la voici, mais je ne pense pas que cela soit bien utile :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html><head lang="fr"><title>Films vus par Pat - Fiche du film vu</title>
    <script type="text/javascript" src="scripts/bdjsdepjm.js"></script>
    <link type="text/css" rel="stylesheet" media="screen" title="Style" href="scripts/style.css" /></head><body>
    <div id="Entete"><script type="text/javascript">AfficheEntete()</script></div>
    <div id="Titre3"><a href='filmsvusparpjm.html'>.::::: Fiche du film vu :::::.</a></div>
    <div id="Centre3"><script type="text/javascript">AfficheDetailsFilm()</script></div>
    <div id="BarreDeBoutons2"><input type="button" name="bouton" style="width:50px" value="Retour" onclick="history.go(-1);return(false)"></div>
    <div id="Copyright"><script type="text/javascript">AfficheCopyright()</script></div>
    <div id="BarreDeBoutons1"><script type="text/javascript">AfficheBarreDeBoutons()</script></div>
    </body></html>

    Voilà, avec ces suppléments d'explications, j'espère que c'est plus clair...

    Bonne soirée.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 050
    Points : 44 568
    Points
    44 568
    Par défaut
    Voici le JS qui permet cela, pour bien montrer de quoi il s'agit :
    Ouah ! ... cela arrive à fonctionner sur quel navigateur ?
    Que tu utilises document.write, pourquoi pas, mais mettre du document.write dans du document.write fallait oser

    Cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write("<p class='Tableau2CelluleFilmVuLe2'><script type='text/javascript'>document.write(\"\"+"+fvl+"+\"\");</script></p>");
    ... peut s'écrire plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write("<p class='Tableau2CelluleFilmVuLe2'>" + fvl + "</p>");
    cette autre ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write("<p class='Tableau2CelluleLieuDeVisionnage2'><p class='Tableau2CelluleLieuDeVisionnage3'><script type='text/javascript'>document.write(\"\"+"+ldv+"+\"\");</script></p></p>");
    ... peut s'écrire plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write("<p class='Tableau2CelluleLieuDeVisionnage2'><p class='Tableau2CelluleLieuDeVisionnage3'>" + ldv + "</p></p>");
    mais pourquoi mettre un élément <p> dans un élément <p>, le résultat, après écriture, ne sera absolument pas celui attendu !

    Il existe des méthodes plus « clean » pour générer du code HTML.

    Ceci étant pourrais-tu nous indiquer une valeur de ec que tu récupères avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ec=numeroFilm("numerodefilm");

    il faille mettre une fonction spécifique au titre original de chacun...
    tu peux faire une fonction extractTitle, par exemple, mais je ne vois pas où tu veux récupérer la donnée d'après ce que tu fournies !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Bonjour, NoSmoking.

    Citation Envoyé par NoSmoking Voir le message
    Ouah ! ... cela arrive à fonctionner sur quel navigateur ?
    Je viens de faire un test pour vous répondre (parce que tout cela est affiché sur mon PC dans la GUI d'un exécutable créée par AutoPlay Media Studio et non dans un navigateur) : oui, absolument, ça fonctionne parfaitement dans tous les navigateurs que je possède : IE, Firefox, Edge et Google Chrome.

    Citation Envoyé par NoSmoking Voir le message
    Que tu utilises document.write, pourquoi pas, mais mettre du document.write dans du document.write fallait oser
    Il est peut-être utile de rappeler que cette ligne fait partie de ma fonction "AfficheDetailsFilms()", qui est dans un fichier " bdjs.js " et qui écrit du code HTML dans ma page HTML (dont j'ai donné le code source dans un message précédent)... Il y a donc un "document.write" de la fonction "AfficheDetailsFilm()" qui intègre à la page HTML, entre autre, un "document.write" placé dans une balise <script> </script> pour afficher la valeur de la variable (voir justement ci-dessous la ligne concernée, dont vous avez proposé une correction).

    Citation Envoyé par NoSmoking Voir le message
    Cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write("<p class='Tableau2CelluleFilmVuLe2'><script type='text/javascript'>document.write(\"\"+"+fvl+"+\"\");</script></p>");
    ... peut s'écrire plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write("<p class='Tableau2CelluleFilmVuLe2'>" + fvl + "</p>");
    OK... J'ai testé en remplaçant ma ligne par la vôtre... et, désolé, mais ça ne marche pas ! Cela affiche le nom de la variable ("FilmVuLe007_2024") et non sa valeur ("03.01.2024")... Idem pour l'autre ligne, dont vous avez proposé une correction.

    Citation Envoyé par NoSmoking Voir le message
    mais pourquoi mettre un élément <p> dans un élément <p>, le résultat, après écriture, ne sera absolument pas celui attendu !
    Ben c'est tout simplement un paragraphe avec un cadre bleu de 1px et un fond gris (défini et placé sur la page avec "position: absolute;" par une classe de mise en forme de mon fichier de style CSS), qui est dans un autre paragraphe avec aussi un cadre bleu de 1px, mais à fond noir, qui englobe plusieurs cadres/paragraphes pour afficher diverses informations sur le film... Comme on dit, une image vaut mille mots, donc je vais joindre à la fin de ce message une capture d'écran de ma GUI. Je précise qu'il y a des div cachés, qui sont affichés en cliquant sur les titres comportant un slash, tel que " Titre / T. original ".

    Citation Envoyé par NoSmoking Voir le message
    ... le résultat, après écriture, ne sera absolument pas celui attendu !
    Et, si, cela fait exactement le résultat attendu, comme vous pouvez le voir sur la capture d'écran jointe, et je m'en sers depuis des années.

    Citation Envoyé par NoSmoking Voir le message
    Il existe des méthodes plus « clean » pour générer du code HTML.
    Je n'en doute pas... Je fais avec les solutions que je connais et que j'ai trouvées sur le Web... Je crée tout cela avec le génial éditeur Notepad++ et je pense que mon code est plus épuré et mieux organisé qu'en utilisant des logiciels, tel que Dream Weaver, qui ajoutent plein de choses inutiles, des balises vides et autres codes superflus...

    Citation Envoyé par NoSmoking Voir le message
    Ceci étant pourrais-tu nous indiquer une valeur de ec que tu récupères avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ec=numeroFilm("numerodefilm");
    Comme déjà dit auparavant, la valeur " ec " est récupérée (par un autre JS, la fonction "numeroFilm(param)") dans l'URL d'un lien cliqué sur une autre page (celle d'un moteur de recherche interne, en JS), qui ouvre cette page affichant la fiche du film. La valeur de ce paramètre est la partie commune aux noms de toutes les autres variables, placée à leur fin.

    Exemple de lien : " fichefilm.html?numerodefilm=0007_2024 ".

    Le paramètre récupéré par la fonction "numeroFilm(param)" est donc " 007_2024 ", qui correspond au "code ID" d'un film stocké dans la BDD locale (qui se trouve elle aussi dans le fichier " bdjs.js "), équivalent à ceux utilisés sur des sites tels que IMDB et TMDB. La valeur de ce paramètre est associé à une autre partie ("FilmVuLe", "TitreOr" etc...) pour donner le nom complet de chaque variable ("FilmVuLe007_2024", "TitreOr007_2024" etc...).

    Voilà... J'espère encore que tout cela aidera à mieux comprendre comment tout mon système fonctionne afin de trouver une solution à ce Titre original, dont j'aimerais faire disparaître les parenthèses encadrantes, qui, pour information, sont en fait utilisées dans le but de différencier le Titre francisé (L'Appel de la forêt) du Titre original (The Call of the Wild) lors de l'affichage du film dans la liste de résultats du moteur de recherche. Bonne journée.

    La capture d'écran de la page HTML "fichefilm.html" affichée dans ma GUI :

    Nom : fichedefilm.jpg
Affichages : 43
Taille : 335,5 Ko

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 050
    Points : 44 568
    Points
    44 568
    Par défaut
    reOUAHh !!!! c'est pire que ce que je pensais

    Donc pour chaque film, par exemple pour 007_2024, tu as des variables correspondantes du type :
    • FilmVuLe007_2024
    • LieuDeVisionnage007_2024
    • FilmVuAvec007_2024
    • TitreFr007_2024
    • TitreOr007_2024
    • etc ...

    et donc en entrée de ta fonction tu récupères la référence à ces variables et tu en affiches le contenu.
    C'est quand même très tordue comme méthode quand on sait que cela pourrait facilement ce gérer avec une présentation JSON par exemple qui permettrait du tri de l'extraction et que sais-je encore, mais bon ...

    Effectivement ce que je t'ai proposé ne craint pas de te satisfaire.

    Pour arriver à tes fins, et compte-tenu du contexte tu pourrais écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // récup. de la valeur via un eval
    var title = eval(tfr).replace(/^\(|\)$/gm, "");
    document.write("<p class='Tableau2CelluleTitre2'>" + title + "</p>");
    ou directement dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write("<p class='Tableau2CelluleTitre2'><script type='text/javascript'>document.write('" + eval(tfr).replace(/^\(|\)$/gm, "") + "');</script></p>");


    Ben c'est tout simplement un paragraphe avec un cadre bleu de 1px et un fond gris (défini et placé sur la page avec "position: absolute;"
    pour moi c'est du blabla car un moteur de rendu normal va traiter :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p class="outer-paragraphe" style="color:red">
      <p class="inner-paragraphe">Contenu contenu</p>
    </p>
    et sera rendu comme étant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p class="outer-paragraphe" style="color:red"></p>
    <p class="inner-paragraphe">Contenu contenu</p>
    <p></p>
    mais si tu as ce que tu veux c'est le principal

  9. #9
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    reOUAHh !!!! c'est pire que ce que je pensais

    Donc pour chaque film, par exemple pour 007_2024, tu as des variables correspondantes du type :
    • FilmVuLe007_2024
    • LieuDeVisionnage007_2024
    • FilmVuAvec007_2024
    • TitreFr007_2024
    • TitreOr007_2024
    • etc ...

    et donc en entrée de ta fonction tu récupères la référence à ces variables et tu en affiches le contenu.
    C'est quand même très tordue comme méthode quand on sait que cela pourrait facilement ce gérer avec une présentation JSON par exemple qui permettrait du tri de l'extraction et que sais-je encore, mais bon ...
    Oui, ouf, vous avez tout compris, c'est exactement ce que j'ai fait : une liste de variables pour chaque informations relatives à un film, qui sont aussi autant de mot-clés que mon moteur de recherche peut utiliser pour afficher les résultats d'une recherche (date de visionnage, date de sortie au cinéma, réalisateur, compositeur, acteurs, etc...).

    Ça fait 11 ans que je fais évoluer la mise en forme et le support de ma liste de films vus, qui est allée de la feuille papier au résultat actuel, en passant par des feuilles Word, Excel et autres... J'ai créé ce système à partir d'un moteur de recherche en JS trouvé sur le Web, que j'ai adapté à mes besoins, il y a environ 5 ans, et que j'ai fait évoluer au niveau visuel et codes des éléments HTML, CSS et JS. Cette énième modification, la version 7.0, a pour but de tenter de simplifier l'ajout de nouveaux films vus. J'ai, entre autre, fusionné plusieurs fichiers dans un unique, "bdjs.js", afin d'éviter de saisir des informations dans plusieurs fichiers chaque fois et d'apporter des modifications à plusieurs endroits.

    Je sais depuis peu que, oui, ma méthode est loin d'être la meilleure... Si je voulais "moderniser" tout cela, je serais bon pour repartir à zéro, modifier mon moteur de recherche, refaire toute ma base de données en conséquence, mes pages HTML... Gros et long travail... Donc, puisque ça fonctionne bien ainsi, ben je vais continuer à m'en servir, faute d'avoir trouvé un logiciel, qui ferait exactement ce que le difficile que je suis en attend, après en avoir testé plusieurs (EMDB, tinyMediaManager, etc...).

    Bon, pour conclure, désolé, mais après analyse de la situation, j'ai découvert que même si on parvenait à supprimer les parenthèses encadrant le Titre original d'un film dans la fiche de film, un autre problème subsisterait ailleurs, sur la liste de résultats du moteur de recherche, lorsque le film est français, et que donc TitreFr = TitreOr... et qu'il est donc inutile d'afficher à côté du titre francisé/français le Titre original entre parenthèse, sinon ça fait doublon... Pour l'instant, j'ai une solution un peu lourde, mais fonctionnel, qui consiste simplement à supprimer la valeur affichant (Titre original) dans le descriptif du film trouvé par le moteur de recherche, affiché par mon tableau objet "tjs_base".

    Merci quand-même de s'être penché sur mon problème, Mathieu et NoSmoking. Votre code, NoSmoking, pourra probablement me servir ultérieurement pour autre chose ou à quelqu'un qui tombera sur ce sujet, que je vais mettre en Résolu.

    Bonne soirée.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Youpi !
    Bonjour, à toutes et à tous.

    Je viens conclure ce sujet sur une bonne note ! NoSmoking a trouvé la bonne solution, bravo, et encore merci à lui ! Finalement, son code m'a bel et bien servi comme prévu.

    Explications obligées : quand j'ai dit, dans mon message de la veille, que je pensais que cacher les parenthèses dans la fiche de film ne suffirait pas à résoudre tout mon problème, je n'avais pas pensé à un détail, pardon... Lorsque se présente le cas de TitreFR = TitreOr (Titre français/francisé identique au Titre Original), parce que c'est soit un film français soit un film étranger, dont la France a conservé le Titre original (par exemple : Revenge), il suffit de mettre la valeur de la variable "TitreOr000_000" à zéro, vide !

    J'ai dû quand-même batailler un peu pour y arriver, j'ai eu souvent des messages d'erreur, j'ai fait plusieurs essais, modifications, des recherches sur le Web et j'ai pu corriger/adapter le code pour que ça fonctionne. La solution trouvée a été de mettre ce code dans la page "fichefilm.html" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script>
    // Script pour supprimer les parenthèses encadrant le titre original.
    var text = document.getElementById("DivTitreOriginal").innerHTML; 
    document.getElementById("DivTitreOriginal").innerHTML = text.replace(/^\(|\)$/gm, " ");
    </script>
    Du coup, comme vous pouvez le voir, du code de NoSmoking, je n'ai gardé que sa fonction replace et ses RegExp. Et voilà ! Une solution de plus pour utiliser plus facilement ma liste de films vus, ouf ! A noter tout de même une précision : en testant le code dans les navigateurs Edge et Firefox, il n'y a que la dernière parenthèse, qui n'est pas affichée, la première reste affichée, bizarre... Cependant, le plus important pour moi, dans ma GUI, ça fonctionne parfaitement, les deux parenthèses sont bien cachées.

    Bonne journée.

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 050
    Points : 44 568
    Points
    44 568
    Par défaut
    A noter tout de même une précision : en testant le code dans les navigateurs Edge et Firefox, il n'y a que la dernière parenthèse, qui n'est pas affichée, la première reste affichée, bizarre...
    lourd à parier que la chaine extraite ne commence pas par une parenthèse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    "(Film avec parenthèses)".replace(/^\(|\)$/gm, "");
    //> 'Film avec parenthèses'
     
    " (Film avec parenthèses)".replace(/^\(|\)$/gm, "")
    //> ' (Film avec parenthèses'
     
    " (Film avec parenthèses) ".replace(/^\(|\)$/gm, "")
    //> ' (Film avec parenthèses) '
    essaie en supprimant la recherche en début et fin de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    " (Film avec parenthèses) ".replace(/\(|\)/gm, "")
    //> ' Film avec parenthèses '
    Ajoute un console.log(text)/alert(text) après extraction pour voir.

    Ta GUI ne possède visiblement pas les dernières évolutions des moteurs de rendu et JavaScript.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Bonjour, NoSmoking.

    Citation Envoyé par NoSmoking Voir le message
    lourd à parier que la chaine extraite ne commence pas par une parenthèse.
    Si, la valeur commence et finit bien par une parenthèse, pas d'espace avant ou après les parenthèses encadrant le titre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "(Film avec parenthèses)".replace(/^\(|\)$/gm, "");
    //> 'Film avec parenthèses'
    Le code ne fonctionne pas pleinement dans un navigateur peut-être parce que je n'ai pas utilisé la fonction eval, comme dans votre code initial...

    Citation Envoyé par NoSmoking Voir le message
    Ta GUI ne possède visiblement pas les dernières évolutions des moteurs de rendu et JavaScript.
    Oui, tout à fait, ma GUI est un exécutable créé par une ancienne version de AutoPlay Media Studio (la 8, de 2018), donc, comme je l'avais dit dans un message d'un autre sujet, son "vieux" moteur JS ne connaît pas les récentes fonctions, telle que localeCompare...

    Le principal, encore une fois, c'est que la solution utilisée marche dans ma GUI, donc, pour moi, affaire classée, et je passe à autre chose.

    Merci encore de s'être penché sur mon sujet. Bonne journée.

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

Discussions similaires

  1. Modifier une variable dans un même batch
    Par danakil1 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 06/08/2009, 08h02
  2. modifier une variable dans un datagrid
    Par frankbe dans le forum ASP.NET
    Réponses: 6
    Dernier message: 30/07/2008, 15h13
  3. Réponses: 5
    Dernier message: 26/03/2008, 12h22
  4. Réponses: 3
    Dernier message: 22/03/2007, 13h09
  5. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46

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