Humph si quelqu'un a une solution plus jolie, je suis preneur
Au final, c'est arrayinfos[repas][variante][composante] que je veux tester, mais:
typeof(arrayinfos[repas][variante][composante]) != 'undefined')
sort en erreur si arrayinfos[repas][variante] n'est pas défini.
Du coup:
function setSelect(composante,variante,repas,arrayinfos) { var html='<select onChange="setplat(this.value,\'' + repas + '\',\'' + composante + '\',\'' + variante + '\');"><option value=""></option>'; for (var i in childsof[variante]) { if (typeof(childsof[composante])!= 'undefined') { if (childsof[composante].indexOf(childsof[variante][i]) > -1) { var option='<option value="' + childsof[variante][i] + '">' + elem['plat'][childsof[variante][i]] + '</option>'; if (typeof(arrayinfos[repas]) != 'undefined') { if (typeof(arrayinfos[repas][variante]) != 'undefined') { if (typeof(arrayinfos[repas][variante][composante]) != 'undefined') { //alert('plop' + childsof[variante][i]); if (arrayinfos[repas][variante][composante]==childsof[variante][i]) {option ='<option value="' + childsof[variante][i] + '" selected="selected">' + elem['plat'][childsof[variante][i]] + '</option>';} } } } html= html + option; } } } html=html+'</select>'; return html; }
Tabulation PowA!!! Il y a moyen de faire mieux non?
EDIT Merci zigazou, qui m'oriente vers try catch dans les commentaires.... plus simple en effet:
function setSelect(composante,variante,repas,arrayinfos) { var html='<select onChange="setplat(this.value,\'' + repas + '\',\'' + composante + '\',\'' + variante + '\');"><option value=""></option>'; for (var i in childsof[variante]) { var option=''; try{ if (childsof[composante].indexOf(childsof[variante][i]) > -1){ try{ if (arrayinfos[repas][variante][composante]==childsof[variante][i]) {option ='<option value="' + childsof[variante][i] + '" selected="selected">' + elem['plat'][childsof[variante][i]] + '</option>';} }catch(err){option ='<option value="' + childsof[variante][i] + '">' + elem['plat'][childsof[variante][i]] + '</option>';} } }catch(err){option='';} html= html + option; } html=html+'</select>'; return html; }
Commentaires
Hello Grouik !
Connais-tu la construction try…catch… de JavaScript ?
Et l’opérateur booléen and ?
Je pense que ça te permettrait de faire déjà quelques réductions.
Ensuite, ce n’est pas évident de te proposer une simplification du code quand on ne connaît pas les structures que tu manipules ;-)
yeah merci, je m'oriente vers try catch. Je me documente là dessus
La structure que je manipule c'est là http://test.tinad.fr/index.php?menu... suer test pwd test
PS Pour le AND...
Un truc du genre
if ((typeof(variable!='undefined')) && (variable=="plop")){.....}
Si variable n'est pas définie ça sort en erreur en js contrairement au php