如何优雅的用js动态的添加html代码

JavaScript010

如何优雅的用js动态的添加html代码,第1张

一、使用javascript 模板引擎

用javascript预编译模版,就是动态修改模板文件使之成为一个可用的静态HTML文件。 我平时会使用artTemplate,性能很好而且易上手。

编写模板

使用一个type="text/html"的script标签存放模板:

<script id="test" type="text/html">

<h1>{{title}}</h1>

<ul>

    {{each list as value i}}

        <li>索引 {{i + 1}} :{{value}}</li>

    {{/each}}

</ul>

</script>

渲染模板

var data = {

    title: '标签',

    list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']

}

var html = template('test', data)

document.getElementById('content').innerHTML = html

二、使用CoffeeScript

CoffeeScript支持类似于Python的跨行字符串,这样很轻易的就能保持HTML结构的可读性,而不需要使用“+”或者采用拼数组的形式。

str="""

<div class="dialog">

  <div class="title">

    <img src="close.gif" alt="关闭" />关闭

  </div>

  <div class="content">

    <img src="delete.jpg" alt="" />

  </div>

  <div class="bottom">

    <input id="Button2" type="button" value="确定" class="btn"/>&nbsp&nbsp

    <input id="Button3" type="button" value="取消" class="btn"/>

  </div>

</div>

"""

这个不一定是由js动态生成的,发帖或者创建账号后不都是需要提交的吗,提交后页面刷新,再出来的页面就是由后台提供的新页面了,这个不需要由前端js动态生成。

当然,如果提交后页面没有刷新,但又有新内容出现,这倒是有可能是js生成的,一般都是用js通过ajax提交数据,然后再把服务器返回的信息显示到页面上,这样做可以减轻服务器的压力,而且由于页面没有刷新(闪一下),用户体验也较佳。

还有一种可能,是预先把要显示的内容放在页面上,但是隐藏起来,当某种预期的事件发生时再显示出来。

就是使用javascript做的一些非常漂亮的特效,比如导航条,一些炫酷的动画,这些模板的好处就是只需修改对应的html元素的id 或者class,就可以将这些效果应用到属于你自己的网页上。百度知道上也有很多JS特效,比如抽奖和商城页面的特效就非常炫酷。