Primero una recomendación, no utilizar javascript intrusivo, o sea ese que se pone directamente en la etiqueta de apertura del elemento, aquí:
<select name='lista' id='lista' onchange='javascript
:Carga_file()'>
Retirar el atributo "onchange='javascript
:Carga_file()'", el resto está bien.
1. Detectar el evento load del objeto window
2. Agregar un escucha de eventos al select
3. Utilizar el objeto evento recibido por el escucha (listener) del select para mostrar el checkbox.
Código Javascript
:
Ver originalwindow.onload = function ()
{
document.getElementById('lista').addEventListener( "change", carga_file, false);
/*
Por ahora solo enfoquémonos en los 2 primeros parámetros del método addEventListener
El primero es el evento que se quiere detectar
El segundo, la referencia a la función que se quiere ejecutar
Ojo: El nombre de la función va sin paréntesis, por que solo se está asignando.
Si se agregan los paréntesis, lo que hace es ejecutar la función apenas lee esa línea de código
*/
}
function Carga_file (evt) // evt es una variable mágica que se recibe al apenas se ejecuta el evento, el navegador la "crea"
{
var select = evt.target;
/*
evt.target, nos devuelve una referencia al elemento que activó el evento
en este caso el select lista, y es igual a hacer lo siguiente
var select = document.getElementById("lista");
*/
var ruta_file = select.value
// es lo mismo que: var ruta_file = document.getElementById("lista").value;
var dir = "archivos/";
//Aquí van las variables que van a guardar las referencias a los otros elementos
var br = document.createElement('br');
var checkbox = document.createElement('input');
var label = document.createElement('label')
checkbox.type = "checkbox"
checkbox.value = ruta_file; //Supongo que este es el valor que se va a colocar al checkbox, pero puede ser cualquier otro
label.innerHTML = "Descargar Archivo";
/*
Ahora solo falta colocar el salto de línea, el checkbox y el label en la página, pero como no conozco en donde está posicionado el elemento
que los contiene, simplemente voy a tomar el elemento padre donde está el select, y los voy a añadir ahí;
*/
var contenedor = select.parentNode;
parentNode.appendChild( br );
parentNode.appendChild( checkbox );
parentNode.appendChild( label );
if(ruta_file == 0){
return 0;
}else{
window.open(dir + ruta_file);
}
}
El resto del código y los demás arreglos van por tu cuenta.
Exitos!