je ne pige pas un truc concernant les regexps.
si je définis ma regexp en dehors de la boucle for par :
for(var i=0; i<l; i++){
rgx.exec(os[i].getAttribute('onclick'));
if(parseInt(RegExp.$1,10)==-2){
todel=i;
}
}
je ne pige pas un truc concernant les regexps.
si je définis ma regexp en dehors de la boucle for par :
for(var i=0; i<l; i++){
rgx.exec(os[i].getAttribute('onclick'));
if(parseInt(RegExp.$1,10)==-2){
todel=i;
}
}
je ne pige pas un truc concernant les regexps.
si je définis ma regexp en dehors de la boucle for par :
for(var i=0; i<l; i++){
rgx.exec(os[i].getAttribute('onclick'));
if(parseInt(RegExp.$1,10)==-2){
todel=i;
}
}
Avec cette notation je crois qu'il faut recreer la regexp
mais tu reponds toi memeà la question ;-)
Avec cette notation je crois qu'il faut recreer la regexp
mais tu reponds toi memeà la question ;-)
Avec cette notation je crois qu'il faut recreer la regexp
mais tu reponds toi memeà la question ;-)
for(var i=0; i<l; i++){
rgx.exec(os[i].getAttribute('onclick'));
if(parseInt(RegExp.$1,10)==-2){
todel=i;
}
}
for(var i=0; i<l; i++){
rgx.exec(os[i].getAttribute('onclick'));
if(parseInt(RegExp.$1,10)==-2){
todel=i;
}
}
for(var i=0; i<l; i++){
rgx.exec(os[i].getAttribute('onclick'));
if(parseInt(RegExp.$1,10)==-2){
todel=i;
}
}
Par ailleurs, bien que ça n'ait aucun rapport avec ton problème, je
voudrais te mettre en garde contre le code trop compact, dans lequel
tu supprimes toutes les espaces qui te semblent inutiles.
Par ailleurs, bien que ça n'ait aucun rapport avec ton problème, je
voudrais te mettre en garde contre le code trop compact, dans lequel
tu supprimes toutes les espaces qui te semblent inutiles.
Par ailleurs, bien que ça n'ait aucun rapport avec ton problème, je
voudrais te mettre en garde contre le code trop compact, dans lequel
tu supprimes toutes les espaces qui te semblent inutiles.
> je testerai ça dès retour devant mon ordi.
Tu nous tiendras au courant ?
> je testerai ça dès retour devant mon ordi.
Tu nous tiendras au courant ?
> je testerai ça dès retour devant mon ordi.
Tu nous tiendras au courant ?
[ /load_items(this, (-?d{1,2}));return false/ ]
[...]
for(var i=0;i<l;i++){
var res=rgx.exec(inputs[i].innerHTML);
if(res){
nb=res[1];
en fait res[0] contient toute la string en entrée (ici
inputs[i].innerHTML).
res[1] ce qui match la première et seule parenthèse ("(-?d{1,2})") =>
c'est ce dont j'ai besoin.
res.index retourne 0 (je suppose que ça signifie que ça match dès le
premier caractère ?
[ /load_items(this, (-?d{1,2}));return false/ ]
[...]
for(var i=0;i<l;i++){
var res=rgx.exec(inputs[i].innerHTML);
if(res){
nb=res[1];
en fait res[0] contient toute la string en entrée (ici
inputs[i].innerHTML).
res[1] ce qui match la première et seule parenthèse ("(-?\d{1,2})") =>
c'est ce dont j'ai besoin.
res.index retourne 0 (je suppose que ça signifie que ça match dès le
premier caractère ?
[ /load_items(this, (-?d{1,2}));return false/ ]
[...]
for(var i=0;i<l;i++){
var res=rgx.exec(inputs[i].innerHTML);
if(res){
nb=res[1];
en fait res[0] contient toute la string en entrée (ici
inputs[i].innerHTML).
res[1] ce qui match la première et seule parenthèse ("(-?d{1,2})") =>
c'est ce dont j'ai besoin.
res.index retourne 0 (je suppose que ça signifie que ça match dès le
premier caractère ?
Le 23/09/2011 16:15, Une Bévue a écrit :
>
> [ /load_items(this, (-?d{1,2}));return false/ ]
> [...]
> for(var i=0;i<l;i++){
> var res=rgx.exec(inputs[i].innerHTML);
> if(res){
> nb=res[1];
Oui, c'est bien ce que j'entendais en disant que tu pouvais utiliser le
résultat du exec() plutôt que RegExp.$1. Je trouve ça plus propre, de la
même façon qu'utiliser un paramètre d'une fonction est en général plus
propre que de passer par une variable globale.
> en fait res[0] contient toute la string en entrée (ici
> inputs[i].innerHTML).
Si c'est le cas, alors c'est que ta regexp se trouve matcher la totalité
de la chaîne passée en entrée. En fait res[0] est censée contenir le
résultat du match complet ; d'après la doc, c'est res.input qui contient
la chaîne passée en entrée.
Au fait, si res[0] est vraiment égal à inputs[i].innerHTML (et donc à
res.input), ça veut dire que tu n'as pas mis de point-virgule après
« return false ». ;-)
> res[1] ce qui match la première et seule parenthèse ("(-?d{1,2})") =>
> c'est ce dont j'ai besoin.
Oui. Et res.length doit contenir 2 (nombre d'éléments).
> res.index retourne 0 (je suppose que ça signifie que ça match dès le
> premier caractère ?
Oui. Et puisque res[0] est égal à res.input, c'est normal que tu aies
res.index = 0.
Prenons un exemple plus simple :
var rgx = /(d{1,2}):(d{1,2})/;
var res = rgx.exec("il est 03:24:57");
Sauf erreur de ma part, tu dois avoir :
res.index = 7
res.input = "il est 03:24:57"
res.length = 3
res[0] = "03:24"
res[1] = "03"
res[2] = "24"
Le 23/09/2011 16:15, Une Bévue a écrit :
>
> [ /load_items(this, (-?d{1,2}));return false/ ]
> [...]
> for(var i=0;i<l;i++){
> var res=rgx.exec(inputs[i].innerHTML);
> if(res){
> nb=res[1];
Oui, c'est bien ce que j'entendais en disant que tu pouvais utiliser le
résultat du exec() plutôt que RegExp.$1. Je trouve ça plus propre, de la
même façon qu'utiliser un paramètre d'une fonction est en général plus
propre que de passer par une variable globale.
> en fait res[0] contient toute la string en entrée (ici
> inputs[i].innerHTML).
Si c'est le cas, alors c'est que ta regexp se trouve matcher la totalité
de la chaîne passée en entrée. En fait res[0] est censée contenir le
résultat du match complet ; d'après la doc, c'est res.input qui contient
la chaîne passée en entrée.
Au fait, si res[0] est vraiment égal à inputs[i].innerHTML (et donc à
res.input), ça veut dire que tu n'as pas mis de point-virgule après
« return false ». ;-)
> res[1] ce qui match la première et seule parenthèse ("(-?\d{1,2})") =>
> c'est ce dont j'ai besoin.
Oui. Et res.length doit contenir 2 (nombre d'éléments).
> res.index retourne 0 (je suppose que ça signifie que ça match dès le
> premier caractère ?
Oui. Et puisque res[0] est égal à res.input, c'est normal que tu aies
res.index = 0.
Prenons un exemple plus simple :
var rgx = /(d{1,2}):(d{1,2})/;
var res = rgx.exec("il est 03:24:57");
Sauf erreur de ma part, tu dois avoir :
res.index = 7
res.input = "il est 03:24:57"
res.length = 3
res[0] = "03:24"
res[1] = "03"
res[2] = "24"
Le 23/09/2011 16:15, Une Bévue a écrit :
>
> [ /load_items(this, (-?d{1,2}));return false/ ]
> [...]
> for(var i=0;i<l;i++){
> var res=rgx.exec(inputs[i].innerHTML);
> if(res){
> nb=res[1];
Oui, c'est bien ce que j'entendais en disant que tu pouvais utiliser le
résultat du exec() plutôt que RegExp.$1. Je trouve ça plus propre, de la
même façon qu'utiliser un paramètre d'une fonction est en général plus
propre que de passer par une variable globale.
> en fait res[0] contient toute la string en entrée (ici
> inputs[i].innerHTML).
Si c'est le cas, alors c'est que ta regexp se trouve matcher la totalité
de la chaîne passée en entrée. En fait res[0] est censée contenir le
résultat du match complet ; d'après la doc, c'est res.input qui contient
la chaîne passée en entrée.
Au fait, si res[0] est vraiment égal à inputs[i].innerHTML (et donc à
res.input), ça veut dire que tu n'as pas mis de point-virgule après
« return false ». ;-)
> res[1] ce qui match la première et seule parenthèse ("(-?d{1,2})") =>
> c'est ce dont j'ai besoin.
Oui. Et res.length doit contenir 2 (nombre d'éléments).
> res.index retourne 0 (je suppose que ça signifie que ça match dès le
> premier caractère ?
Oui. Et puisque res[0] est égal à res.input, c'est normal que tu aies
res.index = 0.
Prenons un exemple plus simple :
var rgx = /(d{1,2}):(d{1,2})/;
var res = rgx.exec("il est 03:24:57");
Sauf erreur de ma part, tu dois avoir :
res.index = 7
res.input = "il est 03:24:57"
res.length = 3
res[0] = "03:24"
res[1] = "03"
res[2] = "24"
Au fait, si res[0] est vraiment égal à inputs[i].innerHTML (et donc à
res.input), ça veut dire que tu n'as pas mis de point-virgule après
« return false ». ;-)
effectivement, mais dans un onclick, à la fin, est-ce utile ?
Prenons un exemple plus simple :
var rgx = /(d{1,2}):(d{1,2})/;
var res = rgx.exec("il est 03:24:57");
Sauf erreur de ma part, tu dois avoir :
res.index = 7
res.input = "il est 03:24:57"
res.length = 3
res[0] = "03:24"
res[1] = "03"
res[2] = "24"
oui, exactement ça, j'ai testé,
et si je change rgx to :
var rgx = /(d{1,2}):(d{1,2}):(d{1,2})/;
j'obtiens :
res.index = '7'
res.input = 'il est 03:24:57'
res.length = '4'
res[0] = '03:24:57'
res[1] = '03'
res[2] = '24'
res[3] = '57'
Au fait, si res[0] est vraiment égal à inputs[i].innerHTML (et donc à
res.input), ça veut dire que tu n'as pas mis de point-virgule après
« return false ». ;-)
effectivement, mais dans un onclick, à la fin, est-ce utile ?
Prenons un exemple plus simple :
var rgx = /(d{1,2}):(d{1,2})/;
var res = rgx.exec("il est 03:24:57");
Sauf erreur de ma part, tu dois avoir :
res.index = 7
res.input = "il est 03:24:57"
res.length = 3
res[0] = "03:24"
res[1] = "03"
res[2] = "24"
oui, exactement ça, j'ai testé,
et si je change rgx to :
var rgx = /(d{1,2}):(d{1,2}):(d{1,2})/;
j'obtiens :
res.index = '7'
res.input = 'il est 03:24:57'
res.length = '4'
res[0] = '03:24:57'
res[1] = '03'
res[2] = '24'
res[3] = '57'
Au fait, si res[0] est vraiment égal à inputs[i].innerHTML (et donc à
res.input), ça veut dire que tu n'as pas mis de point-virgule après
« return false ». ;-)
effectivement, mais dans un onclick, à la fin, est-ce utile ?
Prenons un exemple plus simple :
var rgx = /(d{1,2}):(d{1,2})/;
var res = rgx.exec("il est 03:24:57");
Sauf erreur de ma part, tu dois avoir :
res.index = 7
res.input = "il est 03:24:57"
res.length = 3
res[0] = "03:24"
res[1] = "03"
res[2] = "24"
oui, exactement ça, j'ai testé,
et si je change rgx to :
var rgx = /(d{1,2}):(d{1,2}):(d{1,2})/;
j'obtiens :
res.index = '7'
res.input = 'il est 03:24:57'
res.length = '4'
res[0] = '03:24:57'
res[1] = '03'
res[2] = '24'
res[3] = '57'