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 :

InnerHTML et input


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Consultant decisionnel
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant decisionnel

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Par défaut InnerHTML et input
    Bonjour,

    J'ai un petit soucis avec le script, j'ai fait le script suivant:

    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
    <html>
    <head>
    <meta charset="UTF-8"/>
    <title> Baromètre Social </title>
     </head>
     <body>
     <form>
     <div id="titre">
    <h2 onclick="change_title()" >Sans titre</h2>
    </div>
     </form>
     <script>
        function change_title()
    {
         document.getElementById("titre").innerHTML="<input type='text' value='Sans titre'/>";
    }
    </script>
    </body>
    <html>
    Ma question est simple: comment faire pour que le contenu saisi dans l'input de l'évenement javascript modifie le titre en général ? En gros faire en sorte que cela change le titre entre les deux balises h2. Je sais pas si c'est possible. J'ai vraiment quelques rudiments de javascript pas plus mais je suis preneur pour une explication.

    Merci d'avance
    -

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 414
    Par défaut
    Salut,

    Si tu veux pouvoir modifier le titre depuis le html par l'intermédiaire d'un input de type texte, il faut mettre cet input dans le html, à moins que tu veuille faire afficher cet input dynamiquement en javascript. Ensuite tu récupère la valeur de l'input avec la propriété "value".

    Comme je ne sais pas trop ce que tu veux faire je te donne un petit exemple qui devrait t'occuper un peu :
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <meta name="Description" content = "">
    <title>Baromètre Social</title>
     
    </head>
    <body>
     
    <h1 id="titre">Sans titre</h1>
     
    <p onclick="addInput(this,'insert_input')">Cliquer ici pour insérer un champ</p>
     
    <div id="insert_input"></div> 
     
    <p onclick="changeTitle('toto')">Cliquer ici pour changer le titre avec toto</p>
     
     
    <script>
    function addInput(element,id_cible)
    {
    	var input = '<input type="text" /><button onclick="changeTitle(this.previousSibling.value);">Changer le titre avec le contenu de l\'input text ci-contre</button>';	
     
            document.getElementById(id_cible).innerHTML = input;
     
    	element.remove();
    }
     
    function changeTitle(value)
    {
    	document.getElementById("titre").innerHTML = value;
    }
    </script>
     
    </body>
    </html>

  3. #3
    Membre averti
    Homme Profil pro
    Consultant decisionnel
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant decisionnel

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Par défaut
    Bonjour,

    Tout d'abord merci pour votre réponse.

    J'ai regardé le script, je l'ai compris. Je vais le reprendre même si mon idée de départ était de ne pas interagir avec un bouton. Je voulais faire un champs un peu la google form, quand tu cliques dessus tu as l'input qui apparaît, tu peux écrire ce que tu veux dedans et quand tu cliques ailleurs sur la page ça fait apparaître le texte que tu as saisi sous forme de titre uniquement. Mais ça m'a l'air trop complexe pour mon niveau.

    Je vous remercie de l'aide apportée.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 414
    Par défaut
    Salut,

    Si j'ai bien compris ce que tu veux, c'est pas difficile, même un peu plus simple : dans la fonction "addInput()" du code ci-dessus il te suffit de remplacer la variable "var input" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var input = '<input type="text" /><button onclick="changeTitle(this.previousSibling.value);">Changer le titre avec le contenu de l\'input text ci-contre</button>';
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var input = '<input  type="text"  onblur="changeTitle(this.value)" />';

    Après pour avancer plus en avant dans la gestion des évènements javascript il faudra rapidement t'intéresser à addEventListener

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Autre méthode : on peut très bien avoir le champ input caché. Lors du clic sur le titre, le titre disparait et laisse place au champ input. Lorsque l'on quitte le champ, l'effet inverse se produit.
    Code javascript : 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
    function clickTitle()
    {
    	var i = document.getElementById("txt");
    	var t = document.getElementById('titre');
    	t.style.display = "none";
    	i.style.display = "inline";	
    	i.value = "";
    	i.focus();
    }
     
    function focusOut()
    {
    	var i = document.getElementById("txt");
    	var t = document.getElementById('titre');
    	i.style.display='none';
    	t.innerHTML = i.value;
    	t.style.display = "block";
    }



    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h1 id="titre" onclick="clickTitle()">Ceci est un titre</h1>
    <input id="txt" type="text" style="display:none" onblur="focusOut()"/>


    Par contre, pour le code JS il vaut mieux le mettre dans l'entête (balises head) et pas dans le corps (body) de la page.

    J'en profite aussi pour dire que les balises h doivent obéir à une certaine hiérarchie :
    https://developer.mozilla.org/fr/doc...ading_Elements

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 414
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Par contre, pour le code JS il vaut mieux le mettre dans l'entête (balises head) et pas dans le corps (body) de la page.
    Non, mettre le code javascript en bas du body permet aux navigateurs de commencer à construire la page sans attendre la fin du chargement du code javascript.

    Il y a quelques années je faisais comme toi, mais bon j'en ai eu marre des messages de google PageSpeed donc j'ai fini par mettre le js en bas du body. Cela fonctionne tout aussi bien et si cela peut permettre d'optimiser le chargement de la page...

    Donc si en consultant le code source des pages tu vois aujourd'hui une grande majorité de javascript en bas de page, ce n'est pas une erreur ni une négligence : les plaintes sont à déposer chez google

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    SylvainPV à écrit une entrée de faq la dessus :
    Où placer les balises script dans le code de la page HTML ?.

  8. #8
    Membre averti
    Homme Profil pro
    Consultant decisionnel
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant decisionnel

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Par défaut
    Bonjour, je regarde le code et j'essaie de le comprendre dans la soirée. J'ai pas eu le temps de revenir dessus. Merci beaucoup en tout cas.

    Edit: Pour ce qui est de la place, j'ai pris l'habitude de placer des courts scripts js en bas du body sur symfony. Donc j'ai gardé cette pratique.

    Merci pour le code j'ai résolu mon problème.

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

Discussions similaires

  1. [DOM] innerHTML value input firefox
    Par Teufboy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/08/2007, 10h07
  2. [Javascript] remplacer un input par un label
    Par oolon dans le forum ASP.NET
    Réponses: 4
    Dernier message: 06/10/2006, 16h01
  3. Déclencheur javascript dans un input lors d'un changement de valeur!
    Par kalash_jako dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/04/2006, 18h34
  4. aide javascript
    Par rellik45 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/03/2006, 17h53
  5. BESOIN D'AIDE : Javascript Portail Login Authentification
    Par cybervore dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/02/2006, 17h18

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