Как передать длинное значение в функцию JavaScript - PullRequest
0 голосов
/ 21 октября 2010

У меня есть функция JavaScript:

function someAction(thisTd,text){
  alert(text);
  thisTd.innerHTML=text;
  ...
}

И html-файл:

<td onclick="someAction(this,<?echo 'Long-long text with <b>html-formatting</b>'?>)"/>

Когда я использую такую ​​функцию кода, someAction не вызывает (потому что предупреждение не отображается) и в консоли ошибок в Opera не отображается ошибка. Как решить эту проблему?
Постскриптум Я не использую фреймворки (JQuery и т. Д.).
ОБНОВЛЕНИЕ № 1
Когда я использую такой код:

<?$encoded=str_replace("\n","",str_replace("\r\n","",$text));echo $encoded?>

Работает хорошо. Но я не уверен, что в Linux это работает правильно (я использую Windows)

Ответы [ 4 ]

2 голосов
/ 21 октября 2010

Вы должны удалить тег echo и символ?

 <div onclick="someAction(this,'Long-long text with <b>html-formatting</b>')">myDiv</div>

, и ваша функция будет:

function someAction(thisTd,text){
    thisTd.nodeValue=innerHTML
    ...
}
2 голосов
/ 21 октября 2010

Убедитесь, что вы HTML кодируете его и ставите одинарные кавычки вокруг параметра:

<td onclick="someAction(this, '<?echo htmlspecialchars('Long-long text with <b>html-formatting</b>', ENT_QUOTES) ?>')"/>
1 голос
/ 21 октября 2010

Вы должны заключить строку в одинарные или HTML-кодированные двойные кавычки в первую очередь:

<td onclick="someAction(this, '<?php echo 'yada yada'; ?>');"/>
<!-- OR -->
<td onclick="someAction(this, &quot;<?php echo 'yada yada'; ?>&quot;);"/>

Во-вторых, вывод "echo" может содержать одинарные или двойные кавычки, которые могут разбить строку javascript или атрибут html. Предполагая, что вы используете одинарные кавычки для переноса отображаемой строки:

<td onclick="someAction(this, '<?php echo htmlspecialchars( str_replace( "'", "\\'", $that_long_text ) ); ?>');"/>
0 голосов
/ 21 октября 2010

Просто поместите кавычки вокруг текста, который вы производите:

Логически это приводит к ошибке.

Используйте простые кавычки или экранируйте двойные кавычки (\ ")

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