JavaScript
代码来实现。动态写入是一种很常见常用的方法。
1、用
innerHTML
写入
html代码
:
<div
id="abc"></div>
<script>document.
getElementById
("abc").innerHTML="要写入的文字或内容"</script>
2、
appendChild
()
方法:
<ul
id="myList"><li>Coffee</li><li>Tea</li></ul>
<button
onclick="myFunction()">点击向列表添加项目</button>
<script>
function
myFunction(){
var
node=document.createElement("LI")
var
textnode=document.createTextNode("Water")
node.appendChild(textnode)
document.getElementById("myList").appendChild(node)
}
</script>
一、使用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"/>
<input id="Button3" type="button" value="取消" class="btn"/>
</div>
</div>
"""
<!DOCTYPE html><html>
<head>
<meta charset="utf-8" />
<title>canvas clock</title>
<style type="text/css">
div{
text-align: center
margin-top: 250px
}
#clock{
border: 1px solid #ccc
}
</style>
</head>
<body>
<div>
<canvas id="clock" height="200px" width="200px"></canvas>
</div>
<script type="text/javascript" src="clock.js"></script>
</body>
</html>
js部分:
var dom=document.getElementById('clock')
var ctx=dom.getContext('2d')
var width=ctx.canvas.width
var height=ctx.canvas.height
var r=width/2
function drawBackground(){
ctx.save()
ctx.translate(r,r)
ctx.beginPath()
ctx.lineWidth=10
ctx.arc(0,0,r-5,0,2*Math.PI,false)
ctx.stroke()
var hourNumbers=[3,4,5,6,7,8,9,10,11,12,1,2]
ctx.font='18px Arial'
ctx.textAlign='center'
ctx.textBaseline='middle'
hourNumbers.forEach(function(number,i){
var rad=2*Math.PI/12*i
var x=Math.cos(rad)*(r-30)
var y=Math.sin(rad)*(r-30)
ctx.fillText(number,x,y)
})
for(var i=0i<60i++){
var rad=2*Math.PI/60*i
var x=Math.cos(rad)*(r-18)
var y=Math.sin(rad)*(r-18)
ctx.beginPath()
if(i%5==0){
ctx.fillStyle='#000'
ctx.arc(x,y,2,0,2*Math.PI,false)
}else{
ctx.fillStyle='#ccc'
ctx.arc(x,y,2,0,2*Math.PI,false)
}
ctx.fill()
}
}
function drawHour(hour,minute){
ctx.save()
ctx.beginPath()
var rad=2*Math.PI/12*hour
var mrad=2*Math.PI/12/60*minute
ctx.rotate(rad+mrad)
ctx.lineWidth=6
ctx.lineCap='round'
ctx.moveTo(0,10)
ctx.lineTo(0,-r/2)
ctx.stroke()
ctx.restore()
}
function drawMinute(minute){
ctx.save()
ctx.beginPath()
var rad=2*Math.PI/60*minute
ctx.rotate(rad)
ctx.lineWidth=3
ctx.lineCap='round'
ctx.moveTo(0,10)
ctx.lineTo(0,-r+30)
ctx.stroke()
ctx.restore()
}
function drawSecond(second){
ctx.save()
ctx.beginPath()
ctx.fillStyle='#c14543'
var rad=2*Math.PI/60*second
ctx.rotate(rad)
ctx.moveTo(-2,20)
ctx.lineTo(2,20)
ctx.lineTo(1,-r+18)
ctx.lineTo(-1,-r+18)
ctx.fill()
ctx.restore()
}
function drawDot(){
ctx.beginPath()
ctx.fillStyle="#fff"
ctx.arc(0,0,3,0,2*Math.PI,false)
ctx.fill()
}
function draw(){
ctx.clearRect(0,0,width,height)
var now =new Date()
var hour=now.getHours()
var minute=now.getMinutes()
var second=now.getSeconds()
drawBackground()
drawHour(hour,minute)
drawMinute(minute)
drawSecond(second)
drawDot()
ctx.restore()
}
draw()
setInterval(draw,1000)//每秒执行代码