2016-09-09 2 views
0

Я пытаюсь разобрать настраиваемый блок текста, который я загружаю из файла. Упростим это, скажем, я пытаюсь преобразовать каждый блок текста, который появляется внутри фигурных скобок, в вещь, которую вы можете щелкнуть, чтобы быть предупрежденным javascript с вышеупомянутым текстом.

Проблема заключается в передаче 1 доллара в оповещение. $ 1 не играет как переменная. в любом случае, он начал действовать ОК:

var text='Information here: {Thanks for clicking the info link}'; 
text=text.replace(/{(.+)}/g,'[<span onclick=\"alert(\\'\$1\\')\">click me</span>]'); 
document.write(text); 

До сих пор так хорошо. Я нажимаю, где он говорит «[click me]», и сообщение «Спасибо, что щелкнуло ссылку на информацию», появляется как предупреждение javascript.

Но иногда я хочу, чтобы поместить сообщение с "или" в фигурные скобки

var text='Information here: {Thanks for clicking the "info" link}'; 
text=text.replace(/{(.+)}/g,'[<span onclick=\"alert(\\'\$1\\')\">click me</span>]'); 
document.write(text); 

просто не в состоянии предупредить Если я.. „Просмотр исходного кода выбора“, он дает:

Information here: [<span onclick="alert('Thanks for clicking the " info"="" link')"="">click me</span>] 

Я пробовал каждую комбинацию, избегая «следов», но без радости.

Я подумал о замене "с ", но $ 1 не является переменной

Любые идеи? И да, я хочу это сделать! :-)

Спасибо!

+1

Просто создайте функцию, которая оповещает и вызывает ее. Не пытайтесь манипулировать кодом, используя 'replace'. – Carcigenicate

+0

Замена - это то, что делает весь проект. Пользователь создает документ на основе формы, в который помещается сложный материал, заменяя более простой код. Это позволяет мне делать много других вещей, слишком скучных, чтобы войти, но резюме состоит в том, что я хочу заменить материал. Кроме того, проблема остается в том, что, поскольку я не могу использовать $ 1 в качестве переменной, я не могу передать ее функции - то же самое. – AndyI

ответ

1

Использование одного \ для выхода ' и хотя нет никакой необходимости, чтобы избежать " в одной строки в кавычках.

var text='Information here: {Thanks for clicking the info link}'; 
 
text=text.replace(/{(.+)}/g,'[<span onclick="alert(\'$1\')">click me</span>]'); 
 
document.write(text);

0

Я понятия не имею, имеет ли моя идея каких-либо оснований на всех здесь идея пришла мне в голову - но что, если бы вы использовали (игнорируя кавычки, по иронии судьбы) «"», а не пытаться спасаясь от цитирует себя?

Редактировать: Я идиот, использую (без пробелов) '& quot;'

+0

Ah - да, это работает, но когда я редактирую (используя форму HTML) файл, который хранит & quot;, он переводится в цитату! Практическая проблема для меня. – AndyI

Смежные вопросы