Forum Lifedomus

Version complète : Javascript: ajouter des items à un paramètre "liste" en plusieurs fois ?
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour

j'espérais pouvoir ajouter des items dans un paramètre "liste" en plusieurs coups mais apparemment ce n'est pas possible si facilement ...

Dans un but de debug j'ai décomposé le problème plus simplement:
1) Créer un équipement universel, ajouter une variable "lst" de type LIST, ajouter une autre variable "ok" de type DOUBLE
2) Commande1:
Code :
lst = new Array();
lst[0] = new Array();
lst[0][0] = '0';
lst[0][1] = 'item 0';
ok = 1;
3) Commande2:
Code :
if (ok==1) {
    lst[1] = new Array();
    lst[1][0] = '1';
    lst[1][1] = 'item 1';
    ok = 2;
}
4) sauver l'équipement, placer un widget liste dans le DS pointant sur la variable lst. Placer un autre widget témoin pour la valeur de "ok".
5) lancer Commande1, la liste contient "item 0" et "ok" vaut 1
6) lancer Commande2, la liste aurait du contenir "item 1" mais ce n'est pas le cas. "ok" vaut cependant 2, prouvant qu'on est bien passé.

J'en conclus qu'on ne peut pas utiliser cette technique pour ajouter des items dans une liste existante ... Est-ce normal ou me planté-je quelque part ?
La seule solution que je vois est de passer par une 2e liste (ou plutot un VRAI array JS ?) temporaire dans laquelle je recopierais les items de "lst", puis j'efface "lst" (lst = new Array(); ), je recopie les items de la liste temporaire dans "lst" et j'ajoute les nouveaux items ... j'avais essayé mais vu que ca a eu l'air de planter tout le moteur JS de la LD et que pour m'en sortir j'ai du faire une restauration de sauvegarde j'ai un peu peur de recommencer :) (voir autre message à ce sujet) ...

Question subsidiaire:
ma variable "ok" est utilisée ici a des fins de debug mais en réalité si je retire le "if (ok==1)" de Commande2, je ne peux pas sauver mon équipement car LD considère à ce stade que "lst" n'est pas initialisée ... c'est assez frustrant car à chaque erreur JS au moment de la sauvegarde on perd tout ce qu'on a écrit comme code ... quel test efficace puis-je faire pour vérifier que "lst" a été initialisée (dans une autre partie de code) ?