<

时间:2009-09-09 15:54:46

标签: javascript

我有一大块HTML,它是使用AJAX添加的一些数据的模板。我想将块存储在一个变量中,然后对其中的标记进行替换,但我不想弄乱html的格式以将其转换为javascript字符串。有没有像

这样的东西
<<END 
perl中的

命令会读取字符串中的所有内容,直到它到达结束标记为止?

4 个答案:

答案 0 :(得分:6)

不,不幸的是,JavaScript中没有这样的构造。

您有几个不同的选项,每个选项都有自己的优点:

  1. 字符串连接

    var html = '<div id="something">' +
                   '<p>Lots of HTML</p>' +
                   '<p>Lots of HTML</p>' +
                   '<p>Lots of HTML</p>' +
               '</div>';
    
  2. 转发 newline

    var html = '<div id="something">\
                   <p>Lots of HTML</p>\
                   <p>Lots of HTML</p>\
                   <p>Lots of HTML</p>\
                </div>';
    
  3. 数组加入

    var html = [
        '<div id="something">',
            '<p>Lots of HTML</p>',
            '<p>Lots of HTML</p>',
            '<p>Lots of HTML</p>',
        '</div>'
    ].join('');
    
  4. 将其存储在任意隐藏元素中

    HTML:

    <textarea id="template" style="display:none;">
        <div id="something">
            <p>Lots of HTML</p>
            <p>Lots of HTML</p>
            <p>Lots of HTML</p>
        </div>
    </textarea>
    

    JavaScript的:

    var html = document.getElementById('template').value;
    

    我更喜欢使用<script type="text/html">或HTML评论,但<textarea>似乎很受欢迎。

  5. 使用全面的模板引擎,例如

答案 1 :(得分:0)

简单地说:不。

由于你已经在进行AJAX调用,为什么不通过AJAX检索模板 - 可能是将它变成JS变量的最简单方法。

答案 2 :(得分:0)

语言本身并没有为此提供任何帮助。不过,我曾使用EJS (Embedded Javascript Templates)来解决类似的问题。它易于使用,并且使用大多数Web程序员都应该熟悉的编程模型。

答案 3 :(得分:0)

在vanilla JavaScript中没有这样的东西。而且我不相信jQuery中有该语句的实现。

但是在String原型上使用简单的扩展方法实现它应该很容易。

或者你可以实现Jogn Resig's micro templating solution(他是创建和维护jQuery的人)。