He intentado solucionar este problema sin éxito. Quiero obtener el "valor" de un elemento de entrada de "tipo = archivo". No sé qué estoy haciendo mal que me impide obtener el "valor de entrada".
function addFile() { let toUpload = document.getElementById("fileid").click(); console.log(toUpload.value); //Do something with file name; } <button class=" btn border border-1 rounded-pill " id="add-btn" onclick="addFile()"> <i class="bx bx-plus-medical"> </i> Choose file </button> <input id='fileid' type='file' hidden/>Aparece el diálogo de carga de archivos. Pero no puedo acceder al nombre del archivo. ¿Quién puede resolver un problema con el código anterior, por favor?
Tienes tres problemas diferentes aquí.
click() no devuelve el elemento y el elemento tiene el valor. Almacene el elemento en una variable y utilícelo para leer y hacer clic.files para obtener detalles de los archivos seleccionados. function addFile() { let toUpload = document.getElementById("fileid"); toUpload.addEventListener('change', event => { //Do something with file name; console.log(toUpload.value); console.log(toUpload.files[0].name); }, { once: true }); toUpload.click(); } <button class=" btn border border-1 rounded-pill " id="add-btn" onclick="addFile()"> <i class="bx bx-plus-medical"> </i> Choose file </button> <input id='fileid' type='file' hidden/>el archivo de tipo de entrada no tiene un valor, tendrá una propiedad llamada files
files es una matriz de archivos (en caso de que la entrada permita múltiples), cada archivo tendrá una propiedad llamada nombre para obtener el nombre para mostrar