He creado una página con un formulario para que la gente complete, que cuando se completa produce un archivo de texto de las respuestas de la persona.
Sin embargo, quiero que las personas tengan la opción de omitir una pregunta si no quieren responderla.
El problema con el código a continuación es que si omite una pregunta, aún produce el texto y los espacios anteriores/siguientes.
es decir, si una persona no quiere responder a la pregunta sobre su edad, el siguiente código generará un texto que dice "Edad: [espacio] [espacio]" en el archivo de texto.
Si alguien se salta una pregunta, ¿cómo detengo que el archivo de texto siga produciendo lo anterior? Idealmente, quiero que se ignore por completo en el archivo de texto si la pregunta no ha sido respondida.
// Get the data from each element on the form. const name = document.getElementById('txtName'); const age = document.getElementById('txtAge'); const email = document.getElementById('txtEmail'); const country = document.getElementById('selCountry'); const msg = document.getElementById('msg'); // This variable stores all the data. let data = '\r Name: ' + name.value + ' \r\n ' + 'Age: ' +age.value + ' \r\n ' + 'Email: ' + email.value + ' \r\n ' + 'Country: ' + country.value + ' \r\n ' + 'Message: ' + msg.value; // Convert the text to BLOB. const textToBLOB = new Blob([data], { type: 'text/plain' }); const sFileName = 'formData.txt'; // The file to save the data. let newLink = document.createElement("a"); newLink.download = sFileName; if (window.webkitURL != null) { newLink.href = window.webkitURL.createObjectURL(textToBLOB); } else { newLink.href = window.URL.createObjectURL(textToBLOB); newLink.style.display = "none"; document.body.appendChild(newLink); } newLink.click();Crear una función simple como esta
const fn = (pre, v, post) => v.length? `${pre || ''} ${v} ${post || ''}`;úsalo así
let data = fn('\r Name: ', name.value, ' \r\n ') + fn('Age: ', age.value, ' \r\n ') + .... etc