У меня есть эта строка:
var strAppend = "<button id='btnUEN' class='k-primary' onclick='getCategoryByUEN(" + stronClick + ")'>"+ name +" </button>"
$("#nav_clacom_1474").append(strAppend);
Я поставил console.info
к strAppend
, и у меня есть это значение:
<button id='btnUEN' class='k-primary' onclick='getCategoriaByUEN('1','TEST AND TEST')'>TEST AND TEST</button>
Но код HTML выглядит не очень хорошо... покажите это:
<button id='btnUEN' class='k-primary' onclick='getCategoriaByUEN('1','TEST' = "" AND = "" TEST')' = "">TEST AND TEST</button>
Почему и как я могу решить эту...
Совет: одинарные кавычки для JS, двойные для HTML. Никогда больше не занимайтесь этим вопросом.
@isherwood Учитывая, что у них есть встроенные привязки, независимо от того, использовали ли вы одинарные или двойные кавычки в строке, в какой-то момент вам придется избегать некоторых кавычек для встроенной привязки. Обновлено: это еще одна причина для не использовать встроенные привязки.
Истинный. Я пропустил это, потому что не делал этого годами. Дэвид, вместо этого используйте обработчики событий в своем сценарии.
Добро пожаловать в экранирование строк. Что происходит, так это то, что у вас есть разделители, из-за чего ваш HTML ведет себя не так, как вы ожидали.
В этом случае ваши одинарные кавычки внутри атрибута onclick приводят к преждевременному завершению одинарных кавычек onclick, окружающих атрибут, потому что они ведут себя как разделители. Чтобы этого не произошло, вы должны экранировать эти разделители, добавив обратную косую черту.
Вот обходной путь, чтобы заменить все '
на \'
внутри вашей переменной.
var stronClick_escaped = stronClick.replace(/'/g, "\\'")
var strAppend = "<button id='btnUEN' class='k-primary' onclick='getCategoryByUEN(" + stronClick_escaped + ")'>"+ name +" </button>"
$("#nav_clacom_1474").append(strAppend);
Причина, по которой я заменил его на "\\'"
, заключается в том, что \
— это escape-символ! Так что вам тоже нужно бежать от него.
Редактировать: кавычки, из-за которых ваши строки преждевременно заканчиваются, являются разделителями, а символы внутри экранированной строки являются escape-символами.
Судя по его коду, в его переменной stronClick
уже есть символы кавычек. Иначе как бы он напечатал onclick='getCategoriaByUEN('1','TEST AND TEST')'
?
Ах, я пропустил, что переменная на самом деле содержит подстроку входных аргументов. На самом деле в этом случае ему просто нужно поменять местами '
в значении на "
, и это сработает.
В любом случае, оба должны были бы сбежать. Потому что strAppend заключен в двойные кавычки.
Вы неправильно избегаете своих кавычек