我从网下了这段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.
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>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货