Способ заключать в строки
В учебнике написано что строки можно заключать в одинарные и двойные кавычки, мне нужно было написать такой код:
на кнопке INPUT поставил атрибут onclick так onclick= ' код ' далее мне в коде надо было вызвать функцию eval написал так onclick= ' eval("код") ' далее мне в коде eval нужно использовать такой код document.getElementsByName() тоесть опять нужно передать строку но я не могу уже использовать не двойные не одинарные кавычки так как они использованы выше я использовал этот символ ` в firefox работает можно ли заключать строки в этот символ будет ли работать во всех браузерах? кто знает? или я чего то не догоняю? |
А как на счет экранирования?
onclick= ' eval(\'код\') ' |
не работает пробовал
|
Цитата:
В первую очередь мы пишем в HTML, потому как в первую очередь работает HTML-парсер, разбирая наш документ. А в атрибутах кавычки нужно заменять html-мнемониками: onclick="eval("код")" onclick='eval('код')' Либо комбинировать кавычки (как в js): onclick="eval('код')" При этом не забываем что мы пишем все-таки js код, хоть и внутри html. HTML-парсер, разобрав документ, передает js-код из атрибута onclick в js-движок, поэтому экранировать надо и по правилам js: onclick="eval("alert(\"строка\")")" Смотрим: <button onclick="eval("alert(\"строка\")")">Click me</button> Eval - зло. Чайники его любят использовать даже тогда, когда этого вообще не требуется )) Инлайновые onclick'и - тоже не есть хорошо. Навешивайте обработчики из js и не придется извращаться с экранированием. |
понятно, спасибо
|
Цитата:
В js иной способ экранирования - слэш. В атрибутах событий приходится экранировать сразу по двум правилам. |
Цитата:
Бивас, тест! (с) alert('Это \'тест\' экранирования'); Таки работает! :D |
извиняюсь за тупость, html парсер схавает мнемоник а что он передаст вместо него в js движок?
|
он преобразуется в кавычку?
|
вроде разобрался, кстати этот символ ` работает на firefox в js движке а в ie не работает
alert(`строка`); |
Часовой пояс GMT +3, время: 21:30. |