Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
Las etiquetas HTML dentro del literal de cadena no se pasan correctamente al método JS

Así que he leído de un archivo JSON. Y puedo obtener fácilmente el valor del nombre y el valor de photo_url y parte de la biografía de cada "persona".

https://codepen.io/lpmurray16/pen/ExvpQgP

Aquí es donde está el JSON: https://bensdemo.prod.equisolve-dev.com/api/v1/eq-test

Entonces, en el archivo JavaScript que se encuentra dentro del codepen vinculado anteriormente (perdón por el formato, lo hace cada vez que guardo ...), pero las líneas 23-40 son una función que se llama onClick para la clase "tarjeta" y la etiqueta del botón en estas líneas a continuación... Paso los argumentos a esta función como ${person.arg} y puedes ver que funciona para algunas de las personas porque cuando haces clic en las primeras tres personas se abre el modal con la información correcta en cada lugar Pero en uno de los person.bio dentro del JSON se rompe debido a un delimitador en una etiqueta de anclaje como esta --> ".

¿Me estoy perdiendo algo obvio? Esto es lo más cerca que estoy sin arrancarme el pelo. Y el mensaje de error simplemente no se detecta "SyntaxError: token no válido o inesperado" en la línea 1 del archivo HTML. ¿Cuál no ayuda en absoluto? ¿Me estoy perdiendo una etiqueta de cierre o algo así?

 document.getElementById("cards").innerHTML = ` ${allData.map(function (person) { let regex = /[_\*#"]/g; return ` <div class="card flex-col" onClick="changeModalContent('${person.name.replace(regex,"")}', '${person.title}','${person.photo_url}', '${person.bio}'); modal.open();"> <div class="card_top"> <img class="prof_pic" src="${person.photo_url}" alt="${person.name.replace(regex, "")}"/> </div> <div class="card_bottom flex-col"> <h3 class="prof_name">${person.name.replace(regex, "")}</h3> <p class="prof_title">${person.title}</p> <button class="view_button" onClick="changeModalContent('${person.name.replace(regex,"")}', '${person.title}', '${person.photo_url}', '${person.bio}'); modal.open();">View Bio </button> </div> </div> `; }).join("")} `;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema no son las comillas dobles en la etiqueta de anclaje, es \r\n en su fuente json. Puede saberlo porque la entrada de Sam Darnold no tiene ninguna " s". Primero deberá desinfectar el retorno de carro y los saltos de línea.

Actualice su expresión regular para que sea:

 let regex = /[_\*#"\r\n]/g;

Luego reemplace ambas instancias de:

 ${person.bio}

con:

 ${person.bio.replace(regex, "")}

Ahora su código se representará correctamente como puede ver en el codepen en funcionamiento .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda