在Javascript中使用长字符串文字的最佳方法是什么?

时间:2009-05-22 05:10:37

标签: javascript ruby-on-rails ruby heredoc

  

可能重复:
  Multiline strings in Javascript

在Ruby中你可以做这样的事情

temp =<< -SQLCODE   从用户中选择* SQLCODE

这样你的代码中就会有很长的字符串文字,而不必转义很多字符。 JavaScript中有类似的内容吗?

目前我有这样的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> \
");

3 个答案:

答案 0 :(得分:6)

您引用的语法通常称为here-document (or HEREDOC),不,它在Javascript中不可用。

正如您所做的那样添加反斜杠是在JavaScript中跨越多行的字符串的适当方法。

答案 1 :(得分:3)

像这样的html内联是不好的做法,但如果你真的想要更清洁,请试试这个:

使用您想要的html在页面上放置一个隐藏的div,并用{title}替换自定义参数。调用update时,传递yourdiv.innerHTML.replace(...

答案 2 :(得分:0)

如果您正在使用Rails,那么使用rjs更新一个带有多行HTML的div更加清晰:

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

然后overlay.html.erb将包含上面的原始html而不转义。

额外的好处是片段'overlay'也可以在初始页面加载中使用,在很多情况下也是你想要的。