该方法的关键是Cookie技术和动态图像特性的综合运用。使用Cookie,可以在用户端的硬盘上记录用户的数据,下次访问此站点时,即可读取用户端硬盘的Cookie,直接得知来访者的身份和访问次数等有关信息。JavaScript中通过document.cookie属性访问Cookie,这个属性包括名字、失效日期、有效域名、有效URL路径等。用等号分开的名字和其值是Cook
ie的实际数据,本例中用来存储该访问者访问该页面的次数。通过把Web页中的图像映射到一个Images数组,一定条件下修改该数组项的特性,可以实现动态图像显示。本例中,首先预载入一组图像,每次调用该Web页时,随机产生新的一组图像,通过覆盖原图像实现动态的趣味性效果。
源程序count.html
< html>
< head>
< meta http-equiv=″Content-Type″
content=″text/html; charset=gb2312″>
< title>趣味计数器< /title>
< /head>
< body>
< p>< script language=″JavaScript″>
var expdays=60;
var exp=new Date();
exp.setTime(exp.getTime()
(expdays*24*60*60*1000));
function count(info){
//若是该访客的第一次访问,将计数器值赋1,否则加1累积
var wwhcount=getcookie(′wwhcount′);
if (wwhcount==null){
wwhcount=1;
}
else{wwhcount++;}
setcookie(′wwhcount′,wwhcount,exp);
return countdisp(wwhcount)
}
function countdisp(countvar){
//实现随机显示,不足6位以0补全,可以自己调整显示位数
var countvar1=″000000″+countvar;
var howFar1=countvar1.length;
countvar1=countvar1.substring(howFar1, howFar1-1)
var index=″ ″+Math.floor(Math.random()*10);
if (index==″10″){
index=″0″};
for (var icount=0;icount< 6;icount++){
var g=countvar1.substring(icount,icount+1);
document.images[icount].src=″http:
//localhost/images/″+index+g+″.gif″;
}
}
function getCookieVal(offset){
//获取该访问者的已访问次数
var endstr=document.cookie.indexOf(″;″,offset);
if (endstr==-1)
endstr=document.cookie.length;
return unescape(document.cookie.substring(offset,endstr));
}
function getcookie(name){
//截取Cookie中的name信息段
var arg=name+″=″;
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i< clen){
var j=i+alen;
if (document.cookie.substring(i,j)==arg)
return getCookieVal(j);
i=document.cookie.indexOf(″ ″,i)+1;
if (i==0) break;}
return null;
}
function setcookie(name,value){
//存储该访客计数器的数值
var argv=setcookie.arguments;
var argc=setcookie.arguments.length;
var expires=(argc>2)?argv[2]:null;var path=(argc>3)?argv[3]:null;
var domain=(argc>4)?argv[4]:null;
var secure=(argc〉5)?argv[5]:false;
document.cookie=name+″=″+escape(value)
+((expires==null)?″ ″″;expires=″+expires.toGMTString()))
+((path==null)?″ ″″;path=″+path))+((domain==null)?″
″″;domain=″+domain))+((secure==true)?″;secure″:″ ″);
}
function deletecookie(name){
//使该信息行失效,删除该用户关于访问次数的信息
var exp=new Date();
exp.setTime(exp.getTime()-1);
var cval=getcookie(name);
document.cookie=name+″=″+cval+″;expires=″+exp.toGMTString();
}
< /script>< /p>
< ! --预载入图像数组-->
您是第 < img src=″http://localhost/images/00.gif″ height=20 width=20>
< img src=″http://localhost/images/00.gif″
height=20 width=20>
< img src=″http://localhost/images/00.gif″
height=20 width=20>
< img src=″http://localhost/images/00.gif″
height=20 width=20>
< I mg src=″http://localhost/images/00.gif″
height=20 width=20>
< img src=″http://localhost/images/00.gif″
height=20 width=20>次光临!
< script language=″JavaScript″>
//调用count()函数,实现计数器的动态图像显示
count();
< /script>
< /body>
< /html>
注意事项
由于使用了JavaScript语言,因此该方法具有与应用平台的无关性,可以适用于Unix、Windows等多种平台。另外,此计数器不同于一般意义上的访客计数器,专门用于记录某一访客对某一网站的访问次数。
最终效果如下图-2,有bug:就是整数后点击%号结果正确,如果小数后面点击%的话结果就错误!其他都正常,求指点:input的value是string类型的,在JS中改如何正确处理下图-1中的if部分??
图-1
图-2
HTML代码如下
[url=]
[/url]
<body><div id="calculator"> <div class="LOGO"> <span class="name">简单的计算器</span> <span class="verson">@walker</span> </div> <div id="shuRu"> <!--screen输入栏--> <div class="screen"> <input type="text" id="screenName" name="screenName" class="screen"> </div> </div> <div id="keys"> <!-- j --> <!--第一排--> <input type="button" id="7" onclick="jsq(this.id)" value="7" class="buttons"> <input type="button" id="8" onclick="jsq(this.id)" value="8" class="buttons"> <input type="button" id="9" onclick="jsq(this.id)" value="9" class="buttons"> <input type="button" id="Back" onclick="tuiGe()" value="Back" class="buttons"> <input type="button" id="C" onclick="clearNum()" value="C" class="buttons" style="margin-right:0px"> <!--第二排--> <input type="button" id="4" onclick="jsq(this.id)" value="4" class="buttons"> <input type="button" id="5" onclick="jsq(this.id)" value="5" class="buttons"> <input type="button" id="6" onclick="jsq(this.id)" value="6" class="buttons"> <input type="button" id="*" onclick="jsq(this.id)" value="X" class="buttons"> <input type="button" id="/" onclick="jsq(this.id)" value="/" class="buttons" style="margin-right:0px"> <!--第三排--> <input type="button" id="1" onclick="jsq(this.id)" value="1" class="buttons"> <input type="button" id="2" onclick="jsq(this.id)" value="2" class="buttons"> <input type="button" id="3" onclick="jsq(this.id)" value="3" class="buttons"> <input type="button" id="+" onclick="jsq(this.id)" value="+" class="buttons"> <input type="button" id="-" onclick="jsq(this.id)" value="-" class="buttons" style="margin-right:0px"> <!--第四排--> <input type="button" id="0" onclick="jsq(this.id)" value="0" class="buttons"> <input type="button" id="00" onclick="jsq(this.id)" value="00" class="buttons"> <input type="button" id="." onclick="jsq(this.id)" value="." class="buttons"> <input type="button" id="%" onclick="jsq(this.id)" value="%" class="buttons"> <input type="button" id="eva" onclick="eva()" value="=" class="buttons" style="margin-right:0px"> </div> <div class="footer"> <span class="aside">欢迎使用JavaScript计算器</span> <span class="link"> <a href="#" title="声明" target="_blank">反馈</a> </span> </div></div></body>[url=]
[/url]
CSS代码如下:
[url=]
[/url]
<style> /*Basic reset*/*{ margin:0; padding:0; box-sizing: border-box; font: 14px Arial,sans-serif;}html{ height:100%; background-color:lightslategrey;}#calculator{ margin: 15px auto; width:330px; height:400px; border: 1px solid lightgray; background-color:darkgrey; padding:15px;}/*LOGO*/.LOGO{ height:20px;}.LOGO .name{ float:left; line-height:30px;}.LOGO .verson{ float:right; line-height:30px;}/*screen*/#shuRu{ margin-top:15px;}.screen{ margin-top:5px; width:300px; height:40px; text-align: right; padding-right:10px; font-size:20px;}#keys{ border:1px solid lightgray; height:223px; margin-top:25px; padding:8px;}#keys .last{ margin-right:0px;}.footer{ margin-top:20px; height:20px;}.footer .link{ float:right;}#keys .buttons{ float:left; width: 42px; height: 36px; text-align:center; background-color:lightgray; margin: 0 17px 20px 0;} </style>[url=]
[/url]
javascript代码如下:
[backcolor=rgb(255, 255, 255) !important][size=1em]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <script>
var num = 0; // 定义第一个输入的数据
function jsq(num) {
//获取当前输入
if(num=="%"){
document.getElementById('screenName').value=Math.round(document.getElementById('screenName').value)/100;
}else{
document.getElementById('screenName').value += document.getElementById(num).value;
}
}
function eva() {
//计算输入结果
document.getElementById("screenName").value = eval(document.getElementById("screenName").value);
}
function clearNum() {
//清0
document.getElementById("screenName").value = null;
document.getElementById("screenName").focus();
}
function tuiGe() {
//退格
var arr = document.getElementById("screenName");
arr.value = arr.value.substring(0, arr.value.length - 1);
}
</script>
|