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 :
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
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>
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>
Partager