Я использую fn:escapeXml, чтобы избежать кавычек в функции javascript. Это отлично работает с двойными кавычками, но не работает с одинарными кавычками.
Ниже приведен HTML-код:
<button class = "location"
onclick = "locationModelMethod('${fn:escapeXml(listItem.getBaseRate())}','${listItem.getCreateDate()}','${listItem.getId()}','${listItem.getUser().getEmployeeId()}','${listItem.getChecker().getEmployeeId()}','${listItem.getStatus()}', '${listItem.getRemarks()}' ,${listItem.isActive()})" >
${fn:escapeXml(listItem.getBaseRate())}
</button>
Ошибка возникает, когда ${listItem.getBaseRate()} содержит одинарную кавычку.
Я получаю сообщение об ошибке Uncaught SyntaxError: missing ) after argument list
Кто-нибудь может мне помочь с этим
Вы записываете onclick строка атрибута, что так же плохо, как eval, и нет то же самое, что присваиваете функцию Javascript onclickимущество элемента.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Шаблонные литералы внутри параметров функции не работают. Вам нужно будет просто указать параметры.
Например:
myFunc(`${myVar}`)
Можно просто использовать:
myFunc(myVar)
Кроме того, не прикрепляйте встроенный обработчик, как это было предложено CertainPerformance в комментарии.
Пример, включая передаваемые параметры
<html>
<body>
<script>
// Parameters that get passed into function being fired by onclick
var myParam = 'param';
function myParameterFunction() {
return 'functionParam';
}
function myParameterFunctionWithParams(foo) {
return foo + 1;
}
</script>
<button onclick = "myFunction(myParam, myParameterFunction(), myParameterFunctionWithParams(2))">
Click me!
</button>
<script>
function myFunction(a, b, c) {
console.info('fired', a, b, c)
}
</script>
</body>
</html>
Похоже, что писать и отлаживать это сложно, почему бы вместо этого не прикрепить обработчик должным образом, используя Javascript? (
addEventListenerили присвоить свойствуonclick)