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 :

longueur d'un int undefined


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut longueur d'un int undefined
    Bonjour !

    je dois creer un genérateur de code barre selon la norme EAN 13 ... enfin bon ca c'est pas important.
    Je passe a ma page carte.php une variable qui est un int de 12 chiffres. Au chargement de la page ( OnLoad ) j'execute la fonction EAN13(id) avec ce chiffre passé en parametre. ma fonction retourne false si le nombre n'est pas de longueur 12 ... Or là ma fonction retourne faux car d'après elle un nombre comme " 215487652219 " a une longueur " undefined " ...

    Encore bon cette erreur je peux la supprimer en supprimant le bout de code qui effectue cette verification ... mais là c'est le drame puisque ma fonction ne marche plus du tout ...

    Cette fonction je la tire d'un site ( car bon un algorithme de generateur de code barre c'est pas que ca m'amuse mais bon ... si ya quelqu'un qui en a fait un avant moi autant qu'il serve )
    j'ai juste modifier quelque trucs dont voici la liste :

    - j'ai supprimer le champ de saisie
    - jai executer la fonction au chargement de la page
    - j'ai passer un parametre qui represente ce chiffre par la method 'post'

    Voici le code généré ORIGINAL :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    <style type="text/css">
    .n0 
    {
    background-color:#ffffff;
    height:40px;
    width:1px;
    float:left;
    }
    .n1 
    {
    background-color:#000000;
    height:40px;
    width:1px;
    float:left;
    }
    .l1 
    {
    background-color:#000000;
    height:50px;
    width:1px;
    float:left;
    }
    .nombre 
    {
    position:absolute;
    font-size:14px;
    font-family:times new roman;
    color: #000000;
    }
    .nombre1 
    {
    position:relative;
    font-size:14px;
    font-family:times new roman;
    float:left;
    top:40px;
    color: #000000;
    }
    .barreCode  
    {
    position:absolute;
    top:330px;
    left:400px;
    width:110px;
    height:60px;
    background-color:#ffffff;
    }
    </style>
    <script type="text/javascript">
    var bitsCode = new Array(10);
    bitsCode[0] = new Array('0001101','0100111','1110010','000000');
    bitsCode[1] = new Array('0011001','0110011','1100110','001011');
    bitsCode[2] = new Array('0010011','0011011','1101100','001101');
    bitsCode[3] = new Array('0111101','0100001','1000010','001110');
    bitsCode[4] = new Array('0100011','0011101','1011100','010011');
    bitsCode[5] = new Array('0110001','0111001','1001110','011001');
    bitsCode[6] = new Array('0101111','0000101','1010000','011100');
    bitsCode[7] = new Array('0111011','0010001','1000100','010101');
    bitsCode[8] = new Array('0110111','0001001','1001000','010110');
    bitsCode[9] = new Array('0001011','0010111','1110100','011010');
    function EAN13() {
       cb = document.form.codeBarre.value;
       if (isNaN(cb)||cb.length!=12) {alert("Un nombre de 12 chiffres seulement");return false;}
       divEAN = document.getElementById("EAN13CODE");
       divEAN.innerHTML="";
       codes = new Array();
       for (var i=a=b=0;i<12;i++) {
           codes[i] = eval(cb.charAt(i));
           if (i%2)
    	     b+=codes[i];
    	   else
    	     a+=codes[i];
       }
    	reste = (a+(b*3))%10;
        codes[12] = 10-(reste==0?10:reste);
    	var bits = getBits(codes);
    	bit = bits.split("");
      	el = document.createElement("div");
    	el.innerHTML= cb.charAt(0);
    	el.className = "nombre1";
    	divEAN.appendChild(el);
    	for (var i=0;i<bit.length;i++) {
    	   el = document.createElement("div");
    	   longue =( i==0||i==2||i==46||i==48||i==92||i==94);
    	   el.className = (longue?'l':'n')+bit[i];
    	   divEAN.appendChild(el);
    	   	if (i==3||i==50) {
      		 el2 = document.createElement("div");
    		 el2.innerHTML=(i==3)?cb.substr(1,6):cb.substr(7,6)+codes[12];
    		 el2.className = "nombre";
    		 el2.style.left = el.offsetLeft+"px";
    		 el2.style.top = el.offsetHeight+"px";
    		 divEAN.appendChild(el2);
    	   }
    	}
    }
    function getBits(codes) {
       var bits = "101";
       var cle = bitsCode[codes[0]][3].split("");
       for (var i=1;i<7;i++)
          bits += bitsCode[codes[i]][cle[i-1]];
       bits += "01010";
       for (var i=7;i<13;i++)
          bits += bitsCode[codes[i]][2];
       bits += "101";
       return (bits);
    }
    </script>
    <form name="form" id="frm">
    <input name="codeBarre" type="text" maxlength="12" value="012345678912">
    <input type="button" value="Générer le code barre" onclick="EAN13()">
    </form>
     
     
    <table width="250">
    <tr>
     
    <td></td>
    <td bgcolor="#ffffff" width="100%">
    <div class="barreCode" id="EAN13CODE"></div>
    </td>
    </tr>
    </table>
    </BODY>
    </HTML>
    Voici celui qui Bug que j'ai modifier ...

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <HTML>
    <HEAD>
    </HEAD>
    <body onload='EAN13(620711652856)'><style type="text/css">
    .n0 
    {
    background-color:#ffffff;
    height:40px;
    width:1px;
    float:left;
    }
    .n1 
    {
    background-color:#000000;
    height:40px;
    width:1px;
    float:left;
    }
    .l1 
    {
    background-color:#000000;
    height:50px;
    width:1px;
    float:left;
    }
    .nombre 
    {
    position:absolute;
    font-size:14px;
    font-family:times new roman;
    color: #000000;
    }
    .nombre1 
    {
    position:relative;
    font-size:14px;
    font-family:times new roman;
    float:left;
    top:40px;
    color: #000000;
    }
    .barreCode  
    {
    position:absolute;
    top:330px;
    left:400px;
    width:110px;
    height:60px;
    background-color:#ffffff;
    }
    </style>
    <script type="text/javascript">
    var bitsCode = new Array(10);
    bitsCode[0] = new Array('0001101','0100111','1110010','000000');
    bitsCode[1] = new Array('0011001','0110011','1100110','001011');
    bitsCode[2] = new Array('0010011','0011011','1101100','001101');
    bitsCode[3] = new Array('0111101','0100001','1000010','001110');
    bitsCode[4] = new Array('0100011','0011101','1011100','010011');
    bitsCode[5] = new Array('0110001','0111001','1001110','011001');
    bitsCode[6] = new Array('0101111','0000101','1010000','011100');
    bitsCode[7] = new Array('0111011','0010001','1000100','010101');
    bitsCode[8] = new Array('0110111','0001001','1001000','010110');
    bitsCode[9] = new Array('0001011','0010111','1110100','011010');
    function EAN13(id) {
       cb = id;
       if (isNaN(cb)||cb.length!=12) 
       {
       alert("Un nombre de 12 chiffres seulement : \n le nombre est : "+cb + "\n sa longueur est : " + cb.length);
       return false;
       }
       divEAN = document.getElementById("EAN13CODE");
       divEAN.innerHTML="";
       codes = new Array();
       for (var i=a=b=0;i<12;i++) {
           codes[i] = eval(cb.charAt(i));
           if (i%2)
    	     b+=codes[i];
    	   else
    	     a+=codes[i];
       }
    	reste = (a+(b*3))%10;
        codes[12] = 10-(reste==0?10:reste);
    	var bits = getBits(codes);
    	bit = bits.split("");
      	el = document.createElement("div");
    	el.innerHTML= cb.charAt(0);
    	el.className = "nombre1";
    	divEAN.appendChild(el);
    	for (var i=0;i<bit.length;i++) {
    	   el = document.createElement("div");
    	   longue =( i==0||i==2||i==46||i==48||i==92||i==94);
    	   el.className = (longue?'l':'n')+bit[i];
    	   divEAN.appendChild(el);
    	   	if (i==3||i==50) {
      		 el2 = document.createElement("div");
    		 el2.innerHTML=(i==3)?cb.substr(1,6):cb.substr(7,6)+codes[12];
    		 el2.className = "nombre";
    		 el2.style.left = el.offsetLeft+"px";
    		 el2.style.top = el.offsetHeight+"px";
    		 divEAN.appendChild(el2);
    	   }
    	}
    }
    function getBits(codes) {
       var bits = "101";
       var cle = bitsCode[codes[0]][3].split("");
       for (var i=1;i<7;i++)
          bits += bitsCode[codes[i]][cle[i-1]];
       bits += "01010";
       for (var i=7;i<13;i++)
          bits += bitsCode[codes[i]][2];
       bits += "101";
       return (bits);
    }
    </script>
    <table width="250">
    <tr>
    <td></td>
    <td bgcolor="#ffffff" width="100%">
    <div class="barreCode" id="EAN13CODE"></div>
    </td>
    </tr>
    </table>
    </BODY>
     
    </HTML>

  2. #2
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    element de réponse :

    lorsque je supprime le message d'alerte j'ai l'erreur suivante dans la console d'errreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    charAt(i) is not a function

  3. #3
    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
    heu pourquoi :
    ???
    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 !

  4. #4
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    Ce n'est aps moi qui a codé cette fonction mais a l'origine elle fonctionnait ... et le probleme semble etre avant cela ...

    s'il narrive pas a recuperer la longueur de la chaine comment pourrait t'il recuperer un caractere a un index defini ?

  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 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
    charAt ou substr
    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
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    mais le probleme est bien avant : lorsqu'il regarde la longueur de la chaine il trouve undefined au lieu de 12 pourquoi ?

  7. #7
    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
    que te retourne un alert(bit) juset avant le length ?
    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 !

  8. #8
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    c'est bon j'ai trouvé ... un problème de guillemets ... merci encore pour ton aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2012, 18h13
  2. [PHP 5.2] Undefined index: int in
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2009, 11h45
  3. mapping champs de type int avec longueur
    Par elbissat dans le forum Hibernate
    Réponses: 3
    Dernier message: 27/11/2007, 10h45
  4. 'exit' undefined; assuming extern returning int
    Par petdelascar dans le forum MFC
    Réponses: 2
    Dernier message: 18/10/2005, 12h15
  5. "Conversion" d'un char en int ou longueur
    Par Michaël dans le forum C
    Réponses: 6
    Dernier message: 15/08/2003, 11h40

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