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 sous chaîne de caractères


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 13
    Points
    13
    Par défaut Modifier une sous chaîne de caractères
    Bonjour,

    Dans ma page html, j'ai un champ avec une date de la forme JJ/MM/AAAA en chaîne de caractère. Je récupère les différentes parties de la date avec split('/'). Le problème c'est que je voudrais pouvoir modifier ces champs, c'est à dire JJ, MM, où AAAA. Sauf que ça ne fonctionne pas.

    Exactement voilà ce que j'aimerai faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    elem = document.getElementById('dateTexte').value.split('/');
    elem[1] = elem[1]*1 + 1;
    par exemple. C'est tout simplement pas possible ou dois je utiliser une certaine méthode pour parvenir à mes fins ?

    Merci de votre attention et bonne journée.

  2. #2
    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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Sauf que ça ne fonctionne pas.
    On peut voir ton code ?
    La methode que tu decris fonctionne...

    Tu pourrais aussi passer par la conversion en date ...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 13
    Points
    13
    Par défaut
    Le principe c'est que j'ai un champs texte où on peut écrire la date. A partir de ça, je génère le tableau pour représenter le bon mois à la bonne année en calendrier.
    Au chargement de la page, la date est celle d'aujourd'hui. On peut changer la date ou non et ensuite demander à générer le tableau. Ca c'est bon ça fonctionne très bien.
    A la fin du tableau je rajoute également ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    res = res + "<input type='button' value='+' onclick='date(0)'/> mois";
    res = res + "<input type='button' value='-' onclick='date(1)'/>";
    res = res + "<input type='button' value='+' onclick='date(2)'/> année";
    res = res + "<input type='button' value='-' onclick='date(3)'/>	";
    document.getElementById('b2').innerHTML = res;
    Donc 4 boutons pour incrémenter ou décrémenter les mois ou les années.

    la fonction date :

    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
     
    function date(nb)
    {
    	var elem = document.getElementById('dateTexte').value.split('/');
     
    	if(nb == 0)
    	{
    		if(elem[1]*1 == 12)
    		{
    			elem[1] = 1;
    		}
    		else
    		{
    			elem[1] = elem[1]*1 + 1;
    		}
    	}
    	else 
    	{
    		if(nb == 1)
    		{
    			if(elem[1]*1 == 1)
    			{
    				elem[1] = 12;
    				elem[2] = elem[2] - 1;
    			}
    			else
    			{
    				elem[1] = elem[1] - 1;
    			}
    		}
    		else 
    		{
    			if(nb == 2)
    			{
    				elem[2] = elem[2]*1 + 1;	
    			}
    			else
    			{
    				elem[2] = elem[2]*1 - 1;
    			}
    		}
    	}
    	genereTab();
    }

  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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Voici une proposition qui passant par les dates ne retourne que des dates valides ...
    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
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <style type="text/css">
    input {width:80px;}
    </style>
    <script type="text/javascript">
    function digits(fig){
    fig=fig.toString()
    fig=fig.replace(/^(\d)$/,"0$1")
    return fig
    }
     
    function getActuel(){
    return  document.getElementById('res').innerHTML.split('/')
    }
     
    function writeDate(outdate){
    res=digits(outdate.getDate())
    res+='/'+digits(outdate.getMonth()+1)
    res+='/'+outdate.getFullYear();
    document.getElementById('res').innerHTML=res
    }
     
    function Modif(u,diff){
    tabDate=getActuel();
    outd= new Date()
    outd.setFullYear(tabDate[2]*1 +((u=="a")?diff:0) );
    outd.setMonth( tabDate[1]*1-1 +((u=="m")?diff:0)  );
    outd.setDate(tabDate[0]*1+((u=="j")?diff:0) )
    writeDate(outd)
    }
     
    </script>
    <title>Nouvelle page 1</title>
    </head>
     
    <body>
     <div id ="res">01/01/2011</div><br/>
     <input type="button" onclick="Modif('j',1)" value="+jour" /><input type="button" onclick="Modif('m',1)" value="+Mois" /><input type="button" onclick="Modif('a',1)" value="+An" /><br/>
    <input type="button" onclick="Modif('j',-1)" value="-jour" /><input type="button" onclick="Modif('m',-1)" value="-Mois" /><input type="button" onclick="Modif('a',-1)" value="-An" /><br/>
     
    </body>
     
    </html>
    A priori sous IE il y a un truc qui le vexe je cherche

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 135
    Points : 44 923
    Points
    44 923
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    A priori sous IE il y a un truc qui le vexe je cherche
    manque un var devant res, grand classique sous IE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var res=digits(outdate.getDate());
    attendu qu'il y a
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
     <div id ="res">01/01/2011</div><br/>
    essaies en ajoutant
    alert( res.tagName);au début de la fonction writeDate

  6. #6
    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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Bon avec l'esprit en mode weekend ...

    En changeant le nom de la variable, ça fonctionne tout de suite mieux
    Merci NoSmo
    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
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <style type="text/css">
    input {width:80px;}
    </style>
    <script type="text/javascript">
    function digits(fig){
    fig=fig.toString()
    fig=fig.replace(/^(\d)$/,"0$1")
    return fig
    }
     
    function getActuel(){
    return  document.getElementById('res').innerHTML.split('/')
    }
     
    function writeDate(outdate){
    resp=digits(outdate.getUTCDate());
    resp +='/'+digits(outdate.getUTCMonth()+1)
    resp +='/'+outdate.getUTCFullYear();
    document.getElementById('res').innerHTML=resp
    }
     
    function Modif(u,diff){
    tabDate=getActuel();
    outd= new Date()
    outd.setUTCFullYear(tabDate[2]*1 +((u=="a")?diff:0) );
    outd.setUTCMonth( tabDate[1]*1-1 +((u=="m")?diff:0)  );
    outd.setUTCDate(tabDate[0]*1+((u=="j")?diff:0) )
    writeDate(outd)
    }
     
    </script>
    <title>Nouvelle page 1</title>
    </head>
     
    <body>
     <div id ="res">01/01/2011</div><br/>
     <input type="button" onclick="Modif('j',1)" value="+jour" /><input type="button" onclick="Modif('m',1)" value="+Mois" /><input type="button" onclick="Modif('a',1)" value="+An" /><br/>
    <input type="button" onclick="Modif('j',-1)" value="-jour" /><input type="button" onclick="Modif('m',-1)" value="-Mois" /><input type="button" onclick="Modif('a',-1)" value="-An" /><br/>
     
    </body>
     
    </html>

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 13
    Points
    13
    Par défaut
    D'accord, d'accord
    Juste une petite chose, je comprends pas ce que c'est que : (u=="a")?diff:0
    Du coup je comprend pas comment ça fonctionne.

  8. #8
    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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Au lieu de faire une fonction pour ajouter un jour, une fonction pour supprimer un jour, une fonction pour ajouter un mois .... donc en tout 6 fonctions, j'ai totu regroupé en une seule en passant deux paramètres

    l'unité affectée : jour j, mois m, année a,
    le nombre ajouté ou supprimé

    ensuite pour chaque affectation d'unité j'utilise un operateur ternaire

    ce qui équivaut à
    si u vaut "a" rajout diff, sinon rajout 0

    ainsi en fonction du paramètre d'unité passé j'ajoute ou je retranche un j un m ou un a

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 13
    Points
    13
    Par défaut
    Très bien, merci beaucoup !

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

Discussions similaires

  1. [XL-2010] Recherche d'une sous-chaîne de caractères dans une cellule
    Par StephThai dans le forum Excel
    Réponses: 7
    Dernier message: 13/01/2014, 05h21
  2. Extraire une sous chaîne de caractères
    Par hetlar dans le forum Général Java
    Réponses: 2
    Dernier message: 08/08/2013, 02h45
  3. Recherche une sous chaîne de caractères dans un Vector
    Par brino1987 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/06/2013, 15h31
  4. Réponses: 8
    Dernier message: 23/06/2011, 18h51
  5. [PostgreSQL] Sélection d'une sous-chaîne de caractères
    Par ElodieS dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/11/2009, 12h35

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