Estoy tratando de hacer un html local para mostrar texto del archivo txt (también local). Usé esto para leer el archivo en una matriz e imprimirlo:
<input type="file" name="files" id="inputfile"> <script type="text/javascript"> document.getElementById('inputfile') .addEventListener('change', function() { var test=new FileReader(); test.onload=function(){ document.getElementById('output') .textContent=fl.result; } test.readAsText(this.files[0]); }) </script>Sin embargo, me gustaría imprimirlo desde la matriz en párrafos, línea por línea (la primera línea va al encabezado, la segunda al párrafo, la tercera al encabezado y así sucesivamente...). ¿Hay alguna manera de hacerlo automáticamente desde una matriz, o tendría que hacerlo a mano para cada uno? Soy un poco verde en javascript, así que prefiero abstenerme de usar el nodo, etc.
Si los encabezados y los párrafos siempre se alternan estrictamente, puede verificar si cada índice de matriz es par o impar para decidir si envolverlo en etiquetas de encabezado o párrafo. De una sola mano:
arr = ["header", "paragraph", "header", "paragraph", "header", "paragraph"] joined = arr.map((el, i) => { return (i % 2 === 0) ? `<h1>${el}</h1>` : `<p>${el}</p>` ; }).join('') console.log(joined) const arr = ['Heading 1','Para1','Heading 2','Para2','Heading 3','Para3']; const result = arr.map((val, i) => i%2===0 ? `<h2>${val}</h2>` : `<p>${val}</p>`).join(''); document.getElementById('output').innerHTML = result ; <div id="output"></div>Pon esto en tu código:
function arrToPar(arr){ //For JS-Array --> HTML content var out = ""; for(var i = 0; i < arr.length; i++){ out += arr[i] + "<br>"; } return(out); }O...
function arrToString(arr,joiner = " "){ //For JS-Array --> JS-String var out = ""; //The parameter "joiner", by default, is a space //This means that you only need to specify "arr", but you can do //a second parameter. This function behaves like arr.join(joiner). for(var i = 0; i < arr.length; i++){ out += arr[i] + joiner; } }