9

可能重复:
Javascript 中的多行字符串

在 Ruby 中,您可以执行以下操作:

temp = <<-SQLCODE
  select * from users
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> \
");
4

3 回答 3

6

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

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

于 2009-05-22T05:15:56.513 回答
3

像这样使用 html 内联是不好的做法,但如果你真的想更干净地处理它,试试这个:

用你想要的 html 在你的页面上放置一个隐藏的 div,然后用 {title} 之类的东西替换自定义参数。调用更新时,传递 yourdiv.innerHTML.replace(...

于 2009-05-22T05:18:06.183 回答
0

如果您使用的是 Rails,那么使用 rjs 用一些多行 HTML 更新 div 会变得更加简洁:

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

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

额外的好处是片段“覆盖”也可以在初始页面加载中使用,这在很多情况下是您想要的。

于 2009-05-22T09:35:24.260 回答