Estoy tratando de hacer una vista previa del archivo y tuve un problema al crear una función para eliminar la imagen cargada. Necesito crear una función que elimine la imagen cargada y muestre la imagen predeterminada que tengo. Supongamos que tengo una cuenta con una imagen y luego quiero cambiarla, pero cuando subí un archivo no me gustó y quiero hacer clic en un botón que eliminará esta nueva imagen y regresará a la primera. (digamos que no lo guardé). Entonces, en todos los casos, necesito almacenar el primer src en una variable y luego usarlo más tarde si es necesario. Reproduciré aquí el código que creé para obtener una vista previa del archivo (funciona bien). Ahora necesito ayuda para crear la función de eliminación siguiendo los requisitos que dije antes. Si es posible, sin jquery .
const inpFile = document.getElementById("inpFile"); const previewContent = document.getElementById("imagePreview"); const previewDefaultText = previewContainer.querySelector(".previewText"); const previewImage = previewContent.querySelector(".previewImage"); inpFile.addEventListener("change", function(){ const file = this.files[0]; if(file){ const reader = new FileReader(); previewDefaultText.style.display = "none"; previewImage.style.display = "block"; reader.addEventListener("load", function() { previewImage.setAttribute("src", this.result); }); reader.readAsDataURL(file); } })Guarde la fuente original en una propiedad de conjunto de dataset .
inpFile.addEventListener("change", function() { const file = this.files[0]; if (!previewImage.dataset.origSrc) { previewImage.dataset.origSrc = previewImage.src; } if (file) { const reader = new FileReader(); previewDefaultText.style.display = "none"; previewImage.style.display = "block"; reader.addEventListener("load", function() { previewImage.setAttribute("src", this.result); }); reader.readAsDataURL(file); } }) removeButton.addEventListener("click", function() { if (previewImage.dataset.origSrc) { previewImage.src = previewImage.dataset.origSrc; previewImage.dataset.origSrc = ''; } });