该方法的关键是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> 
 
  |