Tengo un problema en el que el apellido del usuario (adfs2"k) tiene comillas dobles, cada vez que necesito editar el apellido y hacer clic en un botón, arroja un error
SyntaxError no detectado: falta) después de la lista de argumentos
He intentado el escape de comillas dobles, pero todavía arroja
lastName = lastName.replace(/\"/g,"\\\"");y esta es la función que estoy usando
"javascript:editUserEmailPopup(' + "'" + firstName + "'" + ',' + "'" + lastName + "'" + ');"Como sugiere @TJ Crowder en su comentario , una de las causas de este problema es incrustar su llamada de función dentro de un atributo HTML. El uso de estos controladores de eventos en línea puede generar problemas como este, así como un código inmanejable. La alternativa es usar una etiqueta de secuencia de comandos externa o insertar una etiqueta de secuencia de comandos.
Sin embargo, incluso dentro de un script aislado, este código tiene algunos problemas que hacen que no quede claro qué debería hacer y no funciona. Creo que el código está destinado a devolver la variable firstName entre comillas dobles, seguida de la variable lastName entre comillas simples. El código no está claro, pero esta solución debería poder solucionarlo:
const firstName = 'asd5"3' const lastName = "jfni8'543" console.log(`"${firstName}", '${lastName}'`)Esta sintaxis de incrustar variables en cadenas y poder usar comillas dobles y simples sin escapar de ellas se denomina literales de plantilla :
Los literales de plantilla están encerrados por el acento grave (
) (acento grave) en lugar de comillas simples o dobles.
Los literales de plantilla pueden contener marcadores de posición. Estos se indican con el signo de dólar y llaves (${expression}). Las expresiones en los marcadores de posición y el texto entre los acentos graves () se pasan a una función.
(De MDN)