Как передать текст с одинарной кавычкой в JavaScript-функцию?

Привет, ребята! У меня возникла проблема при динамическом создании ссылок. Я использую такую структуру:

<a onclick="МояФункция('текст из базы данных')" href="javascript:void(0);">Изменить</a>

Всё работает отлично, пока в тексте не появляется одинарная кавычка. Тогда получается что-то вроде:

<a onclick="МояФункция('Я люблю пончики')">Изменить</a>

И это, конечно, ломает всю конструкцию. Есть идеи, как это исправить? Я бы не хотел сильно менять текущую структуру, так как это своего рода стандарт у нас. Может, кто-нибудь сталкивался с подобным? Буду благодарен за любые советы!

P.S. На сервере у меня ASP, если это важно.

Чувак, я тебя понимаю. Сам долго мучился с этой фигней. Вот что реально помогло - использовать JSON.stringify(). Просто оберни свой текст в него перед вставкой в onclick:

let text = JSON.stringify(textFromDatabase);
let link = `<a onclick=\"МояФункция(${text})\" href=\"#\">Изменить</a>`;

Этот метод автоматом экранирует все спецсимволы, включая кавычки. Работает как часы, проверено на куче проектов. Попробуй, должно зайти!

я, кажется, недавно сталкивался с похожей проблемой. попробуй использовать метод replace() для замены одинарных кавычек на экранированные. примерно так:

textFromDatabase = textFromDatabase.replace(/‘/g, "\’");

это заменит все одинарные кавычки на ’ , и js не будет ломаться.

или можно использовать json.stringify() - он автоматически экранирует все спецсимволы:

textFromDatabase = JSON.stringify(textFromDatabase);

оба варианта должны сработать, не меняя твою текущую структуру. дай знать, если что-то непонятно!

Есть пара способов решить эту проблему. Можно использовать функцию escape() для экранирования спецсимволов или заменить одинарные кавычки на двойные в атрибуте onclick. Еще вариант - использовать data-атрибуты для хранения текста и обрабатывать клик через addEventListener. Какой подход тебе кажется более подходящим для твоего случая? Могу подробнее рассказать про любой из них.