<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<div id="dictionary">
</div>
<div class="letters">
<div class="letter" id="letter-a">
<h3><a href="entries-a.html">A</a></h3>
</div>
<div class="letter" id="letter-b">
<h3><a href="entries-a.html">B</a></h3>
</div>
<div class="letter" id="letter-c">
<h3><a href="entries-a.html">C</a></h3>
</div>
<div class="letter" id="letter-d">
<h3><a href="entries-a.html">D</a></h3>
</div>
<!-- and so on -->
</div>
</head>
<body >
<script>
$(document).ready(function() {
$('#letter-c a').click(function(event) {
event.preventDefault()
$.getScript('c.js')
})
})
</script>
</body>
</html>
将写好的c.js文件放置同一个目录下面
var entries = [
{
"term": "CALAMITY",
"part": "n.",
"definition": "A more than commonly plain and..."
},
{
"term": "CANNIBAL",
"part": "n.",
"definition": "A gastronome of the old school who..."
},
{
"term": "CHILDHOOD",
"part": "n.",
"definition": "The period of human life intermediate..."
}
//省略的内容
]
var html = ''
$.each(entries, function() {
html += '<div class="entry">'
html += '<h3 class="term">' + this.term + '</h3>'
html += '<div class="part">' + this.part + '</div>'
html += '<div class="definition">' + this.definition + '</div>'
html += '</div>'
})
$('#dictionary').html(html)
//$('#dictionary').append(html)
这里的$('#dictionary').html(html)可以直接将需要的代码放入到指定的div内 (<div id="dictionary">)
也可以通过$('#dictionary').append(html)将代码附加到指定的div内 (<div id="dictionary">)
步骤
1、新建一网页文件“sample.html",用记事本或其它文本编辑软件(如UltraEdit)打开,输入如图所示的HTML代码。该网页文件包括一个蓝色的字符串,一个按钮和一个文本框。
2、JS代码可插入到”head"标签之间。编写Javascript代码,代码内容如图所示,并将该段代码复制到网页文件”sample.html“中标签”<head>"和“</head>之间,然后查看网页文件的显示内容。
大段的 HTML 嵌入到 JS 里结果就是悲剧。不能代码高亮不能自动缩进,太难维护了。我的经验是,直接把 HTML 单独写到一个浏览器能访问到的文件里,比如 template/foo.html。然后 JS 里发一个同步 XHR 请求去读这个文件,例如:
var html = Template.load('/template/foo.html')
var target = document.getElementById('xxx')
target.innerHTML = html
Template 是一个工具类,负责发送同步 XHR 请求并返回结果。
这样在开发的时候,模板文件和 JS 代码分离,非常好维护。
当然这样做的话,上线的时候总发 XHR 请求也不是办法。所以在打包 JS 之前,我一般会通过脚本把所有的 Template.load('.*') 提取出来,替换成对应 HTML 的内容。这样在开发时非常方便,上线时也没有性能问题。
比如上面的代码被打包工具跑一下就变成了:
var html = "<ol>\n<li class=\"xxx\">...</li>\n</ol>"// 引号里是 /template/foo.html 对引号、换行做了转义之后的内容,由工具自动生成
var target = document.getElementById('xxx')
target.innerHTML = html