Efectivamente el codigo que me pasas funciona perfectamente. Te paso lo que yo hago por si se te ocurre algo. Todo esto lo hago en el onchange de un input text y funciona correctamente, lo unico es que no se desplaza la barrita al seleccionado.
Código:
function rellena_combo() {
var estilo=window.horas.carga_var2().split(",");
var seleccionado=window.horas.carga_var3().split(",");
var indice = -1;
mis_estilos=eval("estilo");
mis_seleccionado=eval("seleccionado");
//calculo el numero de horas
num_horas = mis_estilos.length - 1;
//para cada hora del array, la introduzco en el select
for(i=0;i<=num_horas;i++){
document.all.txtCal_Event_StartTime.options[i].className=mis_estilos[i].replace(/"/g,'');
cadena = mis_seleccionado[i].replace(/"/g,'');
if (cadena == 'SELECTED' && indice == -1) {
indice = i;
}
}
selecciona_foco(indice);
}
function selecciona_foco(indice) {
document.all.txtCal_Event_StartTime.selectedIndex=indice;
}