Javascript экранирование строк для вывода и избежать NaN - PullRequest
2 голосов
/ 25 декабря 2011

Попытка использовать jquery для вывода строки, которая содержит дефис, например: $("#OpsContent").html($("#OpsContent").html() + "<b>" + $(this).text() +<br> + ( ( group ) ? " for <u>" + group + "</u>" : "" )<br> + " to</b> " + choices + "<br />");

К сожалению, если строка «группа» содержит дефис, вывод всегда выглядит как:
<b>Set Group Rank<u>NaN</u> to</b> 5

Кажется, я не могу правильно интерпретировать переменную группы как строку, похоже, что она пытается вычесть две половины строки.Я пытался использовать group = group.replace("-", "&#46;"); и "\-" до рассматриваемой строки, но это не помогает.Еще более странным является тот факт, что сразу после строки работает нормально:

OpsPending[ count ] = "?do=" + String($(this).attr("id"))<br> + "&selection=" + choices<br> + ( ( group ) ? "&group=" + group : "" );
выводит переменную на отлично!

Решением будет возврат и предварительная обработка всехдефисы на странице с php, но это кажется излишне сложным: должен быть лучший способ, чем этот.

1 Ответ

1 голос
/ 25 декабря 2011

Хм, у вас, кажется, есть дополнительный + в вашей цепочке конкатенации (прямо перед троичным оператором в скобках), что приведет к преобразованию части, в которой вы используете троичный оператор, из строки в число, так какextra + будет интерпретироваться как унарный оператор плюс, в результате чего NaN.Хотя это не совсем объясняет ваши симптомы (т. Е. Это происходит только тогда, когда у group есть дефис, и на самом деле только group отображается как NaN, а не все троичное выражение), я не вижу, как ваш пример кода будетработать правильно, не удаляя лишние + там

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...