我从网下了这段javascript程序,看懂的地方我在后面都标了注释,但有些地方还是不明白. 
不明白的地方有: 
1. 
H="....";       //将字符串付给H 
H=H.split("");  //将H转为数组,有4个元素,每个元素为一"." 
M=".....";      //这样可以省事,免去声明数组的麻烦 
M=M.split("");   
S="......";   
S=S.split("");  
生成这些元素值为点点的数组有什么用? 2. 
for(i=1;i<dots+1;i++)  {       //1-12的div 
document.write(" <div  id='ieDigits'  style='position:absolute;top:0px;left:0px;width:50px;height:50px;font-family:Arial,Verdana;font-size:20px;color:"+fCol+";text-align:center;padding-top:10px'>"+i+" </div>");   
}   这样生成的是一个名字为ieDigits的div数组吗?索引号为数字0-11,元素值为:1-12吗? 3. 
time=new Date();   
secs=time.getSeconds();   
sec=-1.57+Math.PI*secs/30;   
mins=time.getMinutes();   
min=-1.57+Math.PI*mins/30;   
hr=time.getHours();   
hrs=-1.57+Math.PI*hr/6+Math.PI*parseInt(time.getMinutes())/360;  
为什么是-1.57? 为什么要secs/30、mins/30?  hrs为什么要这样算? 4. 
Ypos=document.body.scrollTop+window.document.body.clientHeight-60;   
Xpos=document.body.scrollLeft+window.document.body.clientWidth-60;   实现的是什么? window.document.body.clientHeight是什么意思?有什么用? 5. 
for(i=0;i<dots;++i){   
document.getElementById('ieDigits').style.pixelTop=Ypos-15+40*Math.sin(-0.49+dots+i/1.9);   
document.getElementById('ieDigits').style.pixelLeft=Xpos-14+40*Math.cos(-0.49+dots+i/1.9);   
}   
for(i=0;i<S.length;i++){   
document.getElementById('x').style.pixelTop=Ypos+i*Ybase*Math.sin(sec);   
document.getElementById('x').style.pixelLeft=Xpos+i*Xbase*Math.cos(sec);   
}   
for(i=0;i<M.length;i++){   
document.getElementById('y').style.pixelTop=Ypos+i*Ybase*Math.sin(min);   
document.getElementById('y').style.pixelLeft=Xpos+i*Xbase*Math.cos(min);   
}   
for(i=0;i<H.length;i++){   
document.getElementById('z').style.pixelTop=Ypos+i*Ybase*Math.sin(hrs);   
document.getElementById('z').style.pixelLeft=Xpos+i*Xbase*Math.cos(hrs);   
}   
以上语句是想实现什么功能?Ybase、Xbase是用来做什么的? 6. 
运行时会报错,问题出在ieDigits.style.pixelTop这块,报错内容为:"ieDigits.style为空或不是对象",我在程序中把这句改为:document.getElementById('ieDigits').style.pixelTop ,就不再报错,但运行出来的结果,却不正确.我不知道哪里有出了问题,还有为什么用上面的方法换了就不再报错呢? 
请帮忙,非常感谢。我用的机器系统是xp,IE6,用EditPlus编辑的 以下是原程序 
<script  language="JavaScript">    
<!--  Begin    
fCol = "000000";  //face  colour.    
sCol = "ff0000";  //seconds  colour.    
mCol = "000000";  //minutes  colour.    
hCol = "000000";  //hours  colour.    
H = "....";       //将字符串付给H  
H = H.split("");  //将H转为数组,有4个元素,每个元素为一"."  
M = ".....";      //这样可以省事,免去声明数组的麻烦  
M = M.split("");    
S = "......";    
S = S.split("");    
Ypos = 0;    
Xpos = 0;    
Ybase = 8;    
Xbase = 8;    
dots = 12;    
ns =(document.layers)?1:0;   
if(ns)    
{ dgts = "1  2  3  4  5  6  7  8  9  10  11  12";  //字符串 12个小时数  
   dgts = dgts.split("  ");                         //转成数组      
   for(i=0;i <dots;i++)   
   {                                 //dots=12,上面付的值  
     document.write(" <layer name=nsDigits"+i+" top=0 left=0 height=30 width=30>  <center>  <font face=Arial,Verdana  size=1  color="+fCol+">"+dgts+"  </font>  </center>  </layer>");    
    }       
   for(i=0;i <M.length;i++)   
   { document.write("  <layer  name=ny"+i+"  top=0  left=0  bgcolor="+mCol+"  clip='0,0,2,2'>  </layer>");    
    }    
   for(i=0;i <H.length;i++)   
   { document.write("  <layer  name=nz"+i+"  top=0  left=0  bgcolor="+hCol+"  clip='0,0,2,2'>  </layer>");    
    }    
   for(i=0;i <S.length;i++)   
   { document.write("<layer name=nx"+i+"  top=0  left=0  bgcolor="+sCol+"  clip='0,0,2,2'>  </layer>");    
    }    
}//----------------------从此以后是适应IE的----------------------   
else   
{  document.write("  <div  style='position:absolute;top:0px;left:0px'>  <div  style='position:relative'>");    
   for(i=1;i <dots+1;i++)   //1-12的div  
   { document.write("  <div  id='ieDigits'  style='position:absolute;top:0px;left:0px;width:50px;height:50px;font-family:Arial,Verdana;font-size:20px;color:"+fCol+";text-align:center;padding-top:10px'>"+i+"  </div>");    
    }    
   document.write("  </div>  </div>")    
   document.write("  <div  style='position:absolute;top:0px;left:0px'>  <div  style='position:relative'>");    
   for(i=0;i <M.length;i++)   //分的div  
   { document.write("  <div  id=y  style='position:absolute;width:2px;height:2px;font-size:2px;background:"+mCol+"'>  </div>");    
    }    
   document.write("  </div>  </div>")    
   document.write("  </div>  </div>")    
   document.write("  <div  style='position:absolute;top:0px;left:0px'>  <div  style='position:relative'>");    
   for(i=0;i <H.length;i++)   //小时div  
   {document.write("  <div  id=z  style='position:absolute;width:2px;height:2px;font-size:2px;background:"+hCol+"'>  </div>");    
    }    
   document.write(" </div> </div>")    
   document.write(" <div  style='position:absolute;top:0px;left:0px'>  <div    style='position:relative'>");    
   for(i=0;i <S.length;i++)    //秒div  
   {document.write("  <div  id=x           style='position:absolute;width:2px;height:2px;font-size:2px;background:"+sCol+"'>  </div>");    
    }    
   document.write("  </div>  </div>")    
}    
function  clock()   
{ time=new  Date  ();    
  secs=time.getSeconds();    
  sec=-1.57+Math.PI*secs/30;  //转成弧度值  
  mins=time.getMinutes();    
  min=-1.57+Math.PI*mins/30;    
  hr=time.getHours();    
  hrs=-1.57+Math.PI*hr/6+Math.PI*parseInt(time.getMinutes())/360;      
  if(ns) 
  { Ypos=window.pageYOffset+window.innerHeight-60;    
    Xpos=window.pageXOffset+window.innerWidth-80;    
   }    
  else   
  { Ypos=document.body.scrollTop+window.document.body.clientHeight-60;    
    Xpos=document.body.scrollLeft+window.document.body.clientWidth-60;    
   }    
  if(ns) 
  { for(i=0;i <dots;++i) 
    { document.layers["nsDigits"+i].top=Ypos-5+40*Math.sin(-0.49+dots+i/1.9);    
      document.layers["nsDigits"+i].left=Xpos-15+40*Math.cos(-0.49+dots+i/1.9);    
     }     
    for(i=0;i <S.length;i++) 
    { document.layers["nx"+i].top=Ypos+i*Ybase*Math.sin(sec);    
      document.layers["nx"+i].left=Xpos+i*Xbase*Math.cos(sec);    
     }    
    for(i=0;i <M.length;i++) 
    { document.layers["ny"+i].top=Ypos+i*Ybase*Math.sin(min);    
      document.layers["ny"+i].left=Xpos+i*Xbase*Math.cos(min);    
     }    
    for(i=0;i <H.length;i++) 
    { document.layers["nz"+i].top=Ypos+i*Ybase*Math.sin(hrs);    
      document.layers["nz"+i].left=Xpos+i*Xbase*Math.cos(hrs);    
      }    
   }    
  else 
  { for(i=0;i <dots;++i) 
    {document.getElementById('ieDigits').style.pixelTop=Ypos-15+40*Math.sin(-0.49+dots+i/1.9);    
     document.getElementById('ieDigits').style.pixelLeft=Xpos-14+40*Math.cos(-0.49+dots+i/1.9);    
     }    
    for(i=0;i<S.length;i++) 
    { document.getElementById('x').style.pixelTop=Ypos+i*Ybase*Math.sin(sec);    
     document.getElementById('x').style.pixelLeft=Xpos+i*Xbase*Math.cos(sec);    
     }    
    for(i=0;i <M.length;i++) 
    {document.getElementById('y').style.pixelTop=Ypos+i*Ybase*Math.sin(min);    
     document.getElementById('y').style.pixelLeft=Xpos+i*Xbase*Math.cos(min);    
      }    
    for(i=0;i <H.length;i++) 
    {document.getElementById('z').style.pixelTop=Ypos+i*Ybase*Math.sin(hrs);    
     document.getElementById('z').style.pixelLeft=Xpos+i*Xbase*Math.cos(hrs);    
     }    
  }    
setTimeout("clock()",50);    
}    
if(document.layers||document.all)window.onload=clock;    
//End-->    
</script>

解决方案 »

  1.   

    编程/JAVA/.NET/C++  群号:38850938
      

  2.   

    代码太多了。看不过来。你很用心,嘉奖。2的写法很糟糕。for(i=1;i<dots+1;i++) { //1-12的div document.write(" <div id='ieDigits' style='position:absolute;top:0px;left:0px;width:50px;height:50px;font-family:Arial,Verdana;font-size:20px;color:"+fCol+";text-align:center;padding-top:10px'>"+i+" </div>"); } 它创建了大量的相同ID的div。在和谐的国度里,是一件令程序员不能容忍的事情。其后发生任何错误,都是可以预料的啦。@_@