我有一大块HTML,它是使用AJAX添加的一些数据的模板。我想将块存储在一个变量中,然后对其中的标记进行替换,但我不想弄乱html的格式以将其转换为javascript字符串。有没有像
这样的东西<<END
perl中的命令会读取字符串中的所有内容,直到它到达结束标记为止?
答案 0 :(得分:6)
不,不幸的是,JavaScript中没有这样的构造。
您有几个不同的选项,每个选项都有自己的优点:
var html = '<div id="something">' +
'<p>Lots of HTML</p>' +
'<p>Lots of HTML</p>' +
'<p>Lots of HTML</p>' +
'</div>';
newline
var html = '<div id="something">\
<p>Lots of HTML</p>\
<p>Lots of HTML</p>\
<p>Lots of HTML</p>\
</div>';
var html = [
'<div id="something">',
'<p>Lots of HTML</p>',
'<p>Lots of HTML</p>',
'<p>Lots of HTML</p>',
'</div>'
].join('');
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>
似乎很受欢迎。
答案 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的人)。