11484 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour,
Dans mon code j'ai trois chaines ch1, ch2 et ch3 que je veux les découper selon le caratére ","
quand j'applique la fonction split pour la première chaine ça fonctionne mais je l'applique par la suite à ch2 et ch3 le programme ne marche plus:
var ch1parts=ch1.split(','); //ça marche
var ch2parts=ch2.split(','); //ne marche pas
var ch3parts=ch3.split(','); ne marche pas
y a t'il un truc pour réutiliser split()?
Merci d'avance.
Modifié par developeurdusamedi (21 Jan 2019 - 09:55)
Salut

ch1parts est un Array.

Exemple :

const arCh = [`C'est ici, pas là`, `Mais non, c'est ici`, `Je te dis que non, c'est là`];

let
    ch1parts = arCh[0].split(','),
    ch2parts = arCh[1].split(','),
    ch3parts = arCh[2].split(',');

console.log(`ch1parts est un Arry contenant ${ ch1parts.length } éléments ; ch1parts[0] = ${ ch1parts[0] } ; ch1parts[1] = ${ ch1parts[1] }`);
console.log(`ch2parts est un Arry contenant ${ ch2parts.length } éléments ; ch2parts[0] = ${ ch2parts[0] } ; ch2parts[1] = ${ ch2parts[1] }`);
console.log(`ch3parts est un Arry contenant ${ ch3parts.length } éléments ; ch3parts[0] = ${ ch3parts[0] } ; ch3parts[1] = ${ ch3parts[1] }`);

/*
ch1parts est un Arry contenant 2 éléments ; ch1parts[0] = C'est ici ; ch1parts[1] =  pas là
ch2parts est un Arry contenant 2 éléments ; ch2parts[0] = Mais non ; ch2parts[1] =  c'est ici
ch3parts est un Arry contenant 2 éléments ; ch3parts[0] = Je te dis que non ; ch3parts[1] =  c'est là
*/

Modifié par danielhagnoul (21 Jan 2019 - 10:39)
Bonjour, oui je sais qu'il est un tableau en fait j'ai par exemple:
string s="a,a,a:b,b,b:c,c,c";
var ch=s.split(':');
var ch1=ch[0];
var ch2=ch[1];
var ch1parts=ch1.split(','); //ca marche
var ch2parts=ch2.split(','); //ca marche pas
Salut

Si tu console.log tes deux variables, y'a quoi dedans ?

var ch1=ch[0];
var ch2=ch[1];
success : function(data) {

var ges=data.gesprachparte;
var ges_parts = ges.split(':');
var ges1=ges_parts[0];
var ges2=ges_parts[1];
var ges3=ges_parts[2];
var ges1parts=ges1.split(',');
var anredeges1=ges1parts[0];
var fonctionges1=ges1parts[1];
var vornameges1=ges1parts[2];
var nachnameges1=ges1parts[3];
var emailges1=ges1parts[4];
var telges1=ges1parts[5];






                if (data) {
                $("#vorname").val(data.vorname);
                $("#name").val(data.name);
                $("#anrede").val(data.anrede);
                $("#strasse").val(data.strasse);
                $("#hausnummer").val(data.hausnummer);
                $("#grundungsdatum").val(data.grundungsdatum);
                $("#platz").val(data.platz);
                $("#ort").val(data.ort);
                $("#email").val(data.email);
                $("#email_forder").val(data.email_forder);
                $("#anredeges11").val(anredeges1);
                $("#fonctionges1").val(fonctionges1);
                $("#vornameges1").val(vornameges1);
                $("#nachnameges1").val(nachnameges1);
                $("#emailges1").val(emailges1);
                $("#telefonges1").val(telges1);

le code précedent marche mais une fois j'ajoute
var ges2parts=ges2.split(',');
le code se bloque et aussi la premiére partie sera non fonctionnel
Modifié par developeurdusamedi (21 Jan 2019 - 14:16)
Merci. Ce code, il est "testable" quelque part ? car là, je ne sais toujours pas ce qui se trouve dans data
Modifié par JENCAL (21 Jan 2019 - 14:50)
Data est le résultat d'une requette sql et ges=data.gesprachparte est le contenu de la colonne gesprachparte qui est de la forme "a,a,a:b,b,b:c,c,c" donc quand j'écris
 ges1=ges_parts[0];
je récupére "a,a,a" et quand j'écris
var ges1parts=ges1.split(',');
je récupére un tableau contenant dans chaque case un "a"
Mon probléme est quand je commence de récupérer la deuxiéme partie et la découper par split de la mème facon que "a,a,a" le programme se bloque
Très curieux....
Tu n'as pas d'erreur console ?
Si tu débug en mode pas à pas (via l'inspecteur) tu peux voir le contenue de chaque variable, Débugg un coup pour voir.

Sinon, ton code est-il "testable" en ligne ? avec ton erreur visible bien sur .
Merci JENCAL pour vos réponses mais je suis sur que mon code ne contient pas d'erreur ce qui m'étonne plus. Smiley hum Smiley hum Smiley fache
Modifié par developeurdusamedi (21 Jan 2019 - 16:26)
Modérateur
Bonjour,

La méthode split marche très bien : ça, c'est sûr. Smiley cligne

Sans connaitre exactement les chaines de caractère qui sont dans data.gesprachparte, impossible de faire un diagnostic.

Y-a-t-il toujours le même nombre de ":" et de "," dans ces chaines ?

Si ce n'est pas le cas, le programme plantera dès qu'il essaiera d'accéder à des éléments de tableaux qui n'existent pas.

Il faut tester le nombre d'éléments qu'il y a après chaque split dans le tableau de résultat avant de continuer.

Amicalement,
Meilleure solution
C'est ça.. il nous faut vraiment le contenue de data pour "simuler" ton problème. avec "a,a,a:b,b,b" ça fonctionne parce que c'est basique. ta variable doit être plus complexe.
d'ou l'utilisation des console.log() et/ou du débuggeur.

Je repose ma question

Sinon, ton code est-il "testable" en ligne ? avec ton erreur visible bien sur .

S'il ne l'ai pas, peux-tu nous envoyer directement le contenue de ta variable ?
Modérateur
Bonjour,

EDIT: +1 pour JENCAL

Il faudrait aussi qu'on sache avec quel navigateur et quel OS tu testes.

Il faudrait être sûr que les chaines de caractères ne contiennent pas de sous-chaines spéciales pouvant être modifiées à l'exécution du fait que les chaines initiales semblent être entourées de backquotes et non de double quotes.

Amicalement,
Modifié par parsimonhi (21 Jan 2019 - 16:51)
Voile le contenu de ma variable.


Donc je crois le deuxième élément du tableau existe
Modifié par developeurdusamedi (22 Jan 2019 - 08:25)
Modérateur
Bonjour,

En cas de split de cette chaine, le tableau de résultat contiendra 4 chaines (et non pas 3). La dernière chaine sera vide (portion de la chaine située après le dernier ":").

Peut-être est-ce ça qui provoque l'erreur ?

Amicalement,
Pages :