2009-05-22 2 views
3

Можно создать дубликат:
Multiline strings in JavascriptКаков наилучший способ иметь длинные строковые литералы в Javascript?

В Ruby вы можете сделать что-то вроде этого

темп = < < -SQLCODE выберите * от пользователей SQLCODE

Таким образом, вы имеют очень длинные строковые литералы в вашем коде, не нужно избегать лотов o f символов. Есть ли что-то подобное в JavaScript?

В настоящее время я яваскрипта код, как это, и его сводит меня с ума ...

new Element.update(lightbox_id, " \ 
    <div id='overlay' class='overlay' > \ 
    </div> \ 
    <div id='lightbox' class='lightbox'> \ 
     <div class='lightbox_title'> \ 
     <div class='corner_image' onclick=\"close_lightbox();return false;\"><a href='#' >" + corner_image + "</a></div> \ 
     <div class='lightboxname' id='lightboxname'>" + title + "</div> \ 
     <div class='close_image'> \ 
      <a href='#' onclick=\"close_lightbox();return false;\">Close</a> or Escape key\ 
     </div> \ 
     </div> \ 
     <div id='" + lightbox_content_id + "' class='lightbox_content'> \ 
     </div> \ 
     <script> \ 
     watch_for_escape(); \ 
     </script> \ 
    </div> \ 
"); 
+0

Короткий ответ: нет, вы не можете иметь буквальные символы перевода в JS s без символа продолжения. Несколько других предложений здесь: http://stackoverflow.com/questions/805107/multiline-strings-in-javascript – Shog9

ответ

5

Синтаксис вы имеете в виду часто называют here-document (or HEREDOC) и нет, он не доступен в JavaScript.

Добавление обратного слэша, как вы делали, является подходящим способом охвата строк по нескольким строкам в JavaScript.

2

Имея HTML инлайн как это плохая практика, но если вы действительно хотите, чтобы справиться с этим чище, попробуйте следующее:

Поместите скрытый DIV на странице с HTML вы хотите, и заменить пользовательский Params с чем-то как {title}. При вызове обновлений проходит yourdiv.innerHTML.replace (...

+0

Проблема с этим подходом заключается в том, что это затрудняет инкапсуляцию функциональности в одном файле Javascript - например, написав плагин, который должен вставить конкретный контент в DOM. – alexw

0

Если вы используете Rails, то становится намного ровнее с RJS обновить DIV с некоторым многострочным HTML:

page.replace__html 'lightbox_id', :partial => 'overlay' 

затем overlay.html.erb будет содержать необработанный HTML выше, не избежать.

Дополнительным преимуществом является то, что фрагмент «наложения» также может быть использован в начальной загрузки страницы, а также, что в большинстве случаев является то, что вы хотите.

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