Tengo un problema. Mis usuarios pueden escribir cosas en el área de texto y me gustaría asegurarme de que la primera línea en el editor WYISWYG sea un objeto en JSON, la segunda línea sea un objeto en WYISYG y así sucesivamente.
¿Cuál es el problema real?
Necesito diseñar por separado las tres líneas, por lo que necesito obtener los elementos uno por uno como salida. El problema es que ahora tengo un objeto con una cadena larga que tengo que dividir en tres líneas, lo cual no puedo hacer.
Para ilustrar lo que quiero decir:
Textarea --> alguien escribe:
Llegar:
{"line 1":"<p>Hello<\/p>\"} {"line 2":"<p>I am an example<\/p>\"} {"line 3":"<p>Hello 2<\/p>\"}En cambio, obtengo:
{"line 1":"<p>Hello<\/p>\n<p>I am an example<\/p>\n<p>Hello 2<\/p>\n"}¿Alguien podría ayudar aquí?
Editar: lo estoy analizando así:
openingtimes = parse(json["line1"] ?? "").documentElement!.text;Después de obtener el contenido del área de texto, puede usar textarea .split("\n") para obtener la matriz de líneas separadas. (Observe el uso de " en lugar de ' ).
Si luego necesita convertir esa matriz en un objeto, simplemente cree un objeto vacío, recorra la matriz de líneas y agréguelas.
Eche un vistazo a los diferentes resultados de console.log() en cada etapa:
function getTextareaContentsAsArray() { // Get the element let textarea = document.getElementById('the_editor'); // Get the contents let contents = textarea.value; // Split by line ending let lines_array = contents.split("\n"); console.log(lines_array); // Convert array to array of JSON let lines_object = {}; lines_array // Remove empty lines .filter((v) => v.length) // Loop through all lines and add them to the_json object .map((line, index) => { lines_object[`line${index+1}`] = line; }); console.log(lines_object); let json_as_string = JSON.stringify(lines_object); console.log(json_as_string); } <textarea id="the_editor" cols="50" rows="5"><p>Hello</p> <p>I am an example</p> <p>Hello 2</p> </textarea> <button id="the_button" onclick="getTextareaContentsAsArray()">Get contents as array of lines</button>