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 :

utilisation de substr()


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 51
    Points : 33
    Points
    33
    Par défaut utilisation de substr()
    Bonjour,

    Globalement ce que je souhaite obtenir est ceci. J'ai un nombre qui correspond a des secondes coder sur 3 chiffres dans une variable appelé document.obj1.

    Ainsi je cherche a isoler chacun de ces chiffres un a un pour l'affichage d'un timer avec des images correpsondant au seconde et au minute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	<SCRIPT LANGUAGE="JavaScript">	
    	var premiernum1 = document.obj1;
     
      num0 = premiernum1.substr(0,1);
      num1 = premiernum1.substr(1,1);
      num2 = premiernum1.substr(2,1);
      num3 = premiernum1.substr(3,1);
     
      document.getElementById("num0").value = num0;
      document.getElementById("num1").value = num1;
      document.getElementById("num2").value = num2;
      document.getElementById("num3").value = num3;
      </script>
    mon substr() ne fonctionne pas et heu je seche lol.
    un probleme de type de variable je pense mais ensuite je ne trouve pas.

    Merci a vous de m'indiquer le chemin ;p

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Bonjour.

    Encore un développeur JS qui ne travaille pas dans les bonnes conditions... Si tu avais une console, tu verrais tout de suite où est le problème :
    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> num0 = premiernum1.substr(0,1);
    Error: premiernum1.substr is not a function

    Enfin, je pars du principe que document.obj1 est un élément HTML. S'il s'agit vraiment d'une variable, que tu aurais donc rajoutée à l'objet document, il s'agit d'une mauvaise façon de faire. Mais dans ce cas, ton problème est un peu plus légitime car il s'agit a priori d'une histoire de type : tu ne peux appeler substr que sur des variables de type String, logique. Au passage, note que pour récupérer un seul caractère, tu as aussi vite fait d'utiliser la notation tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var car0 = str[0], car1 = str[1]; // etc.
    Tu peux même factoriser tout ça avec un boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (var i = 0; i < 4; i++) {
       document.getElementById('num' + i).value = premiernum1[i];
    }
    En tout cas, il est urgent que tu te trouves une console JavaScript. => go Google !
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    Merci de tes lumieres je vais potasser tout ca.
    Pour la console j'utilise celle incluse dans chrome. Mais meme avec l'erreur j'aurais eu du mal a trouver une solution satisfaisante.

    document.obj1 est bien une variable que j'utilise dans mon script JS et pas un element html. Donc merci de m'avoir eclairer sur les possibilité alternative au substr.

    Merci Watilin

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    La notation tableau ne fonctionne pas non plus

    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
     
    <SCRIPT LANGUAGE="JavaScript">	
    var premiernum1 = document.obj1;
     
      num0 = premiernum1[0];
      num1 = premiernum1[1];
      num2 = premiernum1[2];
      num3 = premiernum1[3];
     
      document.getElementById("num0").value = num0;
      document.getElementById("num1").value = num1;
      document.getElementById("num2").value = num2;
      document.getElementById("num3").value = num3;
      document.getElementById("num4").value = premiernum1;
      document.getElementById("num5").value = premiernum1[1];
      </script>
    seule l'avant derniere ligne m'affiche correctement un resultat. Les autres me donne un resultat Undefined.
    Elle m'affiche un chiffre qui correspond bien a
    document.obj1
    . J'ai une erreur de syntaxe ?
    Rien de plus dans la console. Pas d'erreur de syntaxe a prioris.

  5. #5
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    hormis le type de ta balise script qui remonte à la préhistoire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var premiernum1 = document.obj1;
     
      num0 = premiernum1[0];
      num1 = premiernum1[1];
      num2 = premiernum1[2];
      num3 = premiernum1[3];
    obj1 il vient d'ou

    premiernum ??? il vient d'ou ???
    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 !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    voila definition initiale de document.obj1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.obj1 = 120 - Math.round((diff/120 - Math.floor(diff/120))*120);
    Ensuite pour premiernum1 c'est une simple variable dont je testais la possibilité de recuperer mon chiffre contenu dans document.obj1 en separant les unitées, dizaine centaine etc..

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Comme je disais, rajouter des variables à l'objet document c'est pas super adroit question lisibilité.
    Sinon, de toute évidence cette variable est de type Number, c'est pourquoi tu ne peux pas t'en servir comme d'une String, ni avec substr, ni avec la notation tableau. Tu as la solution rapide de convertir ton nombre en chaîne, ou bien celle à mon avis plus efficace (point de vue processeur) d'« éplucher » ton nombre dizaine par dizaine, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var copieDuNombre = document.obj1;
    var premiernum1 = [];
    while (copieDuNombre > 0) {
       premiernum1.unshift(copieDuNombre % 10);
       copieDuNombre = Math.floor(copieDuNombre / 10);
    }
     
    console.info(premiernum1);
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    j'ai utiliser l'objet document pour sa portabilité. Je l'utilise dans plusieurs fonction distinctes et j'avais besoin que son accessibilité soit etendue.

    Est ce que tu pense que cette solution sera adapter pour un utilisation sur 9 element rafraichie chaque secondes ?
    document.obj1
    document.obj2
    document.obj3
    document.obj4
    document.obj5
    document.obj6
    document.objetc...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    ton code fonctionne o poil meme si je ne le comprend pas complement. tu rempli le tableau premiernum mais tu peu m'en dire plus ? j'aime bien comprendre et pas simplement recopier ce qu'on me fournis quand j'ai un soucis ! ca serait sympa de ta part watilin.

    et merci encore !

  10. #10
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    En gros je boucle sur le nombre en le divisant par 10 à chaque tour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    copieDuNombre = Math.floor(copieDuNombre / 10);
    Je fais un floor pour retirer les chiffres après la virgule. Ainsi, à chaque tour, les dizaines deviennent des unités, les centaines deviennent des dizaines, etc. Et à chaque fois je récupère le chiffre des unités en faisant un modulo %, qui me renvoie le reste de la division. Par exemple : 14 modulo 10, ça donne 4.
    Ensuite, j'utilise la méthode unshift qui permet d'ajouter un item en début de tableau, en décalant tous les autres. Par exemple, j'ai un tableau ['A', 'B', 'C'], je fais unshift('Z'), le tableau contient maintenant ['Z', 'A', 'B', 'C'].

    A propos de l'objet document, ce dont tu as besoin est simplement d'utiliser des variables globales. Rien ne t'empêche de déclarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var obj1 = ... , obj2 = ... ;
    au niveau global, et de les utiliser ensuite dans tes fonctions. Mieux, tu peux déclarer un objet global qui te servira d'espace de noms :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var Objs = {
       obj1: ... ,
       obj2: ...
    };
    Le problème avec document c'est que tu risques d'écraser une propriété qui existe déjà. Et si cette propriété est en lecture seule (par exemple, un objet protégé du DOM), tu auras une erreur pas facile à comprendre, et ça pourrait te faire perdre beaucoup de temps...
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    Merci de tes lumieres je vais potasser ce que tu m'a donner comme indication pour eviter les variables document.

    Je reviendrais ^^.

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Si tu veux avoir de la portée sur tes variables, tu ne les colles pas sur document (ce qu'il ne faut surtout pas faire), tu les colles sur window ou bien tu les déclares directement sans mettre "var" devant

  13. #13
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    un numérique n'accepte pas de substr ...
    il faut faire un toString() avant
    de même un string n'est pas forcément un array selon la version de js , il faut la spiltter
    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 !

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

Discussions similaires

  1. Utilisation de SUBSTR avec WHERE dans une requête SQL
    Par thipyt dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/10/2016, 15h54
  2. utilisation du substr
    Par And_res dans le forum Développement
    Réponses: 3
    Dernier message: 14/10/2008, 09h53
  3. limite d'utilisation de substr
    Par 6ril25 dans le forum Langage
    Réponses: 3
    Dernier message: 09/04/2008, 16h39
  4. Utilisation de substring
    Par jayjay78 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 13/12/2007, 18h15
  5. [XPath] Utilisation de substring
    Par ciel65 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/12/2006, 11h26

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