除了使用多行变量之外,还有其他方法可以存储 HTML 代码块吗?
Other than using multi line vars, is there any other way I can store blocks of HTML code?
因为我觉得在var中使用多行字符串不是很方便。还有什么其他方法可以处理这个问题?
我不希望我的代码是这样的:
var str = "<p>\'Hello World\'</p>"+"<a href=\'www.blah.com\'>click me</a>";
等等...
我需要这个,因为我希望 HTML 在 javascript 事件之后加载。我不想在引号中使用转义字符,因为它会使代码有点不可读,特别是当您想对其进行更改时。
更新:
我不想在页面加载的同时加载代码。将其设置为 display: none; 然后 display: block; 会减慢速度。
我的第一直觉是隐藏元素,但我看到了关于不想加载 html 的评论。
我的下一个想法是在隐藏元素中尝试 XML <!CDATA[...]]>
块,但测试表明它在 HTML.
中不起作用
这有一种令人难以置信的骇人听闻的感觉,但它可以工作(至少在我非常有限的测试中它做到了)。
<script id="str">/*
<p>'Hello World'</p>
<a href='www.blah.com'>click me</a>
*/</script>
使用 jquery 提取 html 并删除注释。
var str = $("#str").html();
str = str.slice(2, str.length-3).trim();
说你有
<p id="message"> Hello World</p>
在您的 CSS 上,您将拥有:
#message
{
display:none;
/* other css*/
}
在你的 JavaScript 上你可以有类似的东西:
/* after some event or something */
document.getElementById("message").style.display = "block";
你怎么看?
感谢@drs9222,我终于找到了一种方法来做到这一点。我将回答我自己的问题,以便未来的读者了解我为解决问题所做的工作。还要感谢@dandavis 给了我使用 script type="text/plain"
的想法。这就是我的答案。
<!DOCTYPE html>
<html>
<head>
<title>Testing</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/plain" id="preCode">
<h1>Hello World</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sit cumque nobis quo et ducimus. Porro, minima, facilis. Explicabo iure non optio quae! Eveniet dolore ex sunt nemo maiores eum voluptatum.</p>
</script>
<div class="insideHere">
<!-- preCode will go inside here -->
</div>
<input id="clickMe" type="button" value="Click Me!" />
<script>
$('#clickMe').click(function() {
$('.insideHere').append($('#preCode').html());
});
</script>
</body>
</html>
此代码不会妨碍加载除代码本身之外的其他元素。
因为我觉得在var中使用多行字符串不是很方便。还有什么其他方法可以处理这个问题? 我不希望我的代码是这样的:
var str = "<p>\'Hello World\'</p>"+"<a href=\'www.blah.com\'>click me</a>";
等等...
我需要这个,因为我希望 HTML 在 javascript 事件之后加载。我不想在引号中使用转义字符,因为它会使代码有点不可读,特别是当您想对其进行更改时。
更新:
我不想在页面加载的同时加载代码。将其设置为 display: none; 然后 display: block; 会减慢速度。
我的第一直觉是隐藏元素,但我看到了关于不想加载 html 的评论。
我的下一个想法是在隐藏元素中尝试 XML <!CDATA[...]]>
块,但测试表明它在 HTML.
这有一种令人难以置信的骇人听闻的感觉,但它可以工作(至少在我非常有限的测试中它做到了)。
<script id="str">/*
<p>'Hello World'</p>
<a href='www.blah.com'>click me</a>
*/</script>
使用 jquery 提取 html 并删除注释。
var str = $("#str").html();
str = str.slice(2, str.length-3).trim();
说你有
<p id="message"> Hello World</p>
在您的 CSS 上,您将拥有:
#message
{
display:none;
/* other css*/
}
在你的 JavaScript 上你可以有类似的东西:
/* after some event or something */
document.getElementById("message").style.display = "block";
你怎么看?
感谢@drs9222,我终于找到了一种方法来做到这一点。我将回答我自己的问题,以便未来的读者了解我为解决问题所做的工作。还要感谢@dandavis 给了我使用 script type="text/plain"
的想法。这就是我的答案。
<!DOCTYPE html>
<html>
<head>
<title>Testing</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/plain" id="preCode">
<h1>Hello World</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sit cumque nobis quo et ducimus. Porro, minima, facilis. Explicabo iure non optio quae! Eveniet dolore ex sunt nemo maiores eum voluptatum.</p>
</script>
<div class="insideHere">
<!-- preCode will go inside here -->
</div>
<input id="clickMe" type="button" value="Click Me!" />
<script>
$('#clickMe').click(function() {
$('.insideHere').append($('#preCode').html());
});
</script>
</body>
</html>
此代码不会妨碍加载除代码本身之外的其他元素。