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 :

charAt et innerHTML


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut charAt et innerHTML
    Bonjour à tous!

    J'essaye d'obtenir la première lettre du nom de ville récupérée par une requete sql.

    en gros j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     <div id="villeH">
          <?php echo $fe['ville']; ?>
    </div>
    puis mon fichier js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function majuscule() {
    	var chaine = document.getElementById("villeH").innerHTML;
    	alert(chaine);/*là c'est ok, j'ai bien la ville qui s'affiche*/
    	var char = chaine.charAt(0);
    	alert(char);/*ne me renvoit rien du tout*/
     
    }
    Dans firebug, ça ne me donne pas d'erreur...

    Par contre si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function majuscule() {
    	var chaine = "coucou"
    	var char = chaine.charAt(0);
    	alert(char);/*ne me renvoit bien un "c"*/
     
    }
    Là ça fonctionne...

    Y a t'il une incompatibilité avec le innerHTML et le charAt() ?

    Merci pour vos lumières

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    en fait, ton innerTruc démarrerait bien par un caractère blanc...

  3. #3
    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
    Il arrive souvent, surtout quand une chaine est affichée par PHP, qu'il existe des caractères parasites non affichables en début de chaine.

    Tu peux utiliser String.trim() si disponible ou un équivalent avec replace().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function myTrim(str){
        if('trim' in String){
            return str.trim();
        }
        return str.replace(/^\s+|\s+$/g, '');
    }
    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

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    le innerHTML choppe le retour ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id"villeH"><?php echo $fe['ville']; ?></div>

    Sinon sans toucher au php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function majuscule() {
    	var chaine = document.getElementById("villeH").innerHTML;
    	alert(chaine);/*là c'est ok, j'ai bien la ville qui s'affiche*/
    	var char = chaine.match(/[a-z]/i)[0];
    	alert(char);/*ne me renvoit rien du tout*/
     
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Concernant la méthode trim(), j'utilise la ligne ci-dessous au début de mes scripts...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,'')});
    Sinon, à part innerHTML on pourrait utiliser...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var chaine=document.getElementById('villeH').firstChild.nodeValue.trim();
    var char=chaine.charAt(0);

  6. #6
    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,
    je vois une fonction majuscule avec un chartAt(0), donc j'en conclu que le but du jeu est de mettre en majuscule la première lettre

    donc
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #villeH:first-letter{
      text-transform:uppercase;
    }

  7. #7
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    !!!!!!!!!!!!!!
    bon et bien vous m'avez mis sur la voie !

    il fallait mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="villeH"><?php echo $fe['ville']; ?> </div>
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div id="villeH">
          <?php echo $fe['ville']; ?>
    </div>
    du coup c'est effectivement très logique!

    merci à tous !

  8. #8
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    je vois une fonction majuscule avec un chartAt(0), donc j'en conclu que le but du jeu est de mettre en majuscule la première lettre

    donc
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #villeH:first-letter{
      text-transform:uppercase;
    }
    oui c'est effectivement ça !
    mais je vais le faire en js
    mais je ne savais pas qu'on pouvait le faire en CSS

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Sans toucher au code coté serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function majuscule() {
    	var chaine = document.getElementById("villeH").innerHTML;
    	chaine = chaine.replace(/^(?:[^a-z]*)[a-z]/i, Ucase);
    	document.getElementById("villeH").innerHTML=chaine;
     }
    function Ucase(m){
    return m.toUpperCase()
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    j'ai fait ça (par contre je débute hein )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function majuscule() {
    	var chaine = document.getElementById("villeH").innerHTML;
    	var char = chaine.charAt(0).toUpperCase();
    	var subs = chaine.substring(1);
    	var ok = char+subs;
    	var reg = new RegExp(chaine, "g");
    	var rep = ok.replace(reg);
    	document.getElementById("villeH").innerHTML = rep;
    }

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    autant faire le replace direct non ? comme dans mon code au dessus


    sinon avec ton charAt(0) tu t'es compliqué l'existence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var chaine = document.getElementById("villeH").innerHTML;
    	var char = chaine.charAt(0).toUpperCase();
    	var subs = chaine.substring(1);
    	var caps= char.toUpperCase();
    	document.getElementById("villeH").innerHTML = caps+subs;
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    ouais aussi

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

Discussions similaires

  1. modifier le contenu d'une table avec innerHTML
    Par francon81 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/05/2005, 09h02
  2. Problème avec InnerHTML
    Par rat dgout dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2005, 10h02
  3. div et innerHTML : tout sur une ligne?
    Par LineLe dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/04/2005, 11h15
  4. Problème innerHTML sur div !!!
    Par aburner dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/01/2005, 09h23
  5. getelementbyid innerhtml sur Opera?
    Par cynthia dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2004, 10h44

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