la solucion de IsaBelM es la más sencilla porque pasa el valor del option por la función. luego es cuestión de tomar ese valor y asignarlo en la propiedad href. de todos modos, para que entiendas porque no te funciona el código inicial y así en un futuro no cometer el mismo error.
lista es un identificador que pertenece al objeto
document. en tu caso, el contexto de intrepretación de la función
cambia es el objeto window. por eso te da error, porque
lista no esta definido en window.
a nivel más técnico, el
HTML DOM define una colección
forms en el objeto
document, el cual contiene referencia a todos los formularios presentes en el documento. si el formulario contiene un nombre el navegador crea una propiedad con el mismo nombre en el objeto
document con la referencia a ese elemento. por ello, para accesar a ese elemento por su nombre tienes que hacerlo desde el objeto
document.
nota: hay quienes claman que este concepto no funciona en todos los navegadores, aunque en lo personal siempre me ha funcionado. otro modo de accesar por su nombre es usando la coleccion
forms seguido del nombre.
Código:
// cualquiera de las dos son válidas;
document.forms['nombre_formulario'];
document.forms.nombre_formulario;