Ciao, puoi risolvere in vari modi.
Ho l'impressione, però, che tu non abbia capito il problema.
Cerco di schematizzarlo in questo modo:
codice:
// Inizialmente abbiamo sel.options.length = 0
// Dentro sel non esiste ancora nessuna option
// ...
// La riga seguente è quindi sel.options[0] = nuova option;
sel.options[sel.options.length] = new Option('text','value');
// A questo punto sel.options.length è = 1
// Per cui nella riga seguente abbiamo sel.options[1].title = qualcosa;
sel.options[sel.options.length].title = 'text';
// ..ma sel.options[1] non esiste, per cui si verifica un errore di questo tipo:
// TypeError: sel.options[sel.options.length] is undefined
// che interrompe l'esecuzione dello script.
Una soluzione, quindi, può essere quella di decrementare di 1 il valore specificato per l'indice delle options nella tua seconda riga, come giustamente ti ha indicato tampertools:
codice:
sel.options[sel.options.length] = new Option(listino_descrizione, listino_codice);
sel.options[sel.options.length-1].title = listino_descrizione;
Un'altra soluzione può essere quella di usare il metodo add() dell'oggetto select:
codice:
var opt = new Option(listino_descrizione, listino_codice);
opt.title = listino_descrizione;
sel.add(opt);
O ancora, puoi attribuire il title al volo, in questo modo:
codice:
(sel.options[sel.options.length] = new Option(listino_descrizione, listino_codice)).title = listino_descrizione;
Sicuramente ci sono anche altre soluzioni, ma l'importante è che tu abbia capito il problema.