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 659
    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 659
    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 659
    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 659
    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 659
    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 659
    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