求一段JavaScript的注释!!

刚开始学习,哪位大虾帮忙添加个详细的注释啊,最好逐行添加!!!
<script language="JavaScript1.2">
scores = new Array(20);
var numTotal=0;
NS4 = (document.layers) ? 1 : 0;
IE4 = (document.all) ? 1 : 0;
ver4 = (NS4 || IE4) ? 1 : 0;

if (ver4) {
with (document) {
write("<STYLE TYPE='text/css'>");
if (NS4) {
write(".parent {position:absolute; visibility:visible}");
write(".child {position:absolute; visibility:visible}");
write(".regular {position:absolute; visibility:visible}")
}
else {
write(".child {display:none}")
}
write("</STYLE>");
}
}

function getIndex(el) {
ind = null;
for (i=0; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.id == el) {
ind = i;
break;
}
}
return ind;
}

function arrange() {
nextY = document.layers[firstInd].pageY +document.layers[firstInd].document.height;
for (i=firstInd+1; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.visibility != "hide") {
whichEl.pageY = nextY;
nextY += whichEl.document.height;
}
}
}

function initIt(){
if (!ver4) return;
if (NS4) {
for (i=0; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.id.indexOf("Child") != -1) whichEl.visibility = "hide";
}
arrange();
}
else {
divColl = document.all.tags("DIV");
for (i=0; i<divColl.length; i++) {
whichEl = divColl(i);
if (whichEl.className == "child") whichEl.style.display = "none";
}
}
}

function expandIt(el) {
if (!ver4) return;
if (IE4) {
whichEl1 = eval(el + "Child");
for(i=1;i<=numTotal;i++){
whichEl = eval(scores[i] + "Child");
if(whichEl!=whichEl1) {
whichEl.style.display = "none";
}
}
whichEl1 = eval(el + "Child");
if (whichEl1.style.display == "none") {
whichEl1.style.display = "block";
}
else {
whichEl1.style.display = "none";
}
}
else {
whichEl = eval("document." + el + "Child");
for(i=1;i<=numTotal;i++){
whichEl = eval("document." + scores[i] + "Child");
if(whichEl!=whichEl1) {
whichEl.visibility = "hide";
}
}
if (whichEl.visibility == "hide") {
whichEl.visibility = "show";
}
else {
whichEl.visibility = "hide";
}
arrange();
}
}
onload = initIt;
</script>
呵呵,分越来越高了!
注释好的文件见附件,


//这么长! -_-
<script language="JavaScript1.2">
scores = new Array(20); //定义scores数组,包含20个元素
var numTotal=0; //定义numTotal变量,初始值为0
NS4 = (document.layers) ? 1 : 0; //这是一个三元表达式,如果document.layers可以执行,则变量NS4的值为1,否则为0,
IE4 = (document.all) ? 1 : 0; //意思同上,至于document.layers和document.all可以到百度上搜,这些一般用来判断浏览器类型
ver4 = (NS4 || IE4) ? 1 : 0; //如果变量NS4和IE4有一个值为1(为1即为真),则变量ver4值为1,意思是如果浏览器为NetScape或IE则ver4为1

if (ver4) //如果ver4为1,则
{
with (document) //with(document)表示后面{}里的所有都是document的方法(相信你应该知道document.write),如果不用with那么下面的所有write()都要改成document.write()
{
write("<STYLE TYPE='text/css'>"); //在页面上输出"<style type='text/css'>",这个是html的style标签,
if (NS4) //如果NS4为1,则
{
write(".parent {position:absolute; visibility:visible}"); //在页面上输出内容,在Css里 .parent表示parent是一个css类,它的定位方式是绝对定位,可见性为可见
write(".child {position:absolute; visibility:visible}"); //同上
write(".regular {position:absolute; visibility:visible}") //同上
}
else //如果NS4不为1,那么推理一下,程序能够运行到这一步,就肯定是IE4这个变量值为1
{
write(".child {display:none}") //css类child,它的显示为空,即不显示,且不占位
}
write("</STYLE>"); //输出</style>,结束style标签
}
}

function getIndex(el) //定义函数getIndex(),并传递形参el
{
ind = null; //ind初值为null
for (i=0; i<document.layers.length; i++) //循环语句,i初值为0,每循环一次++(即加1),直到i不小于document.layers.length时停止循环,document.layers.length在这里可以理解为在NetScape浏览器中页面内所有layer(层)的集合内的对象的个数(通俗点:页面中层的个数)
{
whichEl = document.layers[i]; //将document.layers[i]赋给变量whichEl,
if (whichEl.id == el) //如果whichEl变量(由于上一步将document.layers[i]赋给whichEl,所以whichEl这时指向一个对象)的id等于形参el,则
{
ind = i; //将i赋给变量ind
break; //退出循环
}
}
return ind; //返回变量ind
}

function arrange()
{
nextY = document.layers[firstInd].pageY +document.layers[firstInd].document.height; //这里的firstInd是什么?少了一句吧!我想应该少了一句firstInd=getIndex(这里放形参),document.layers.pageY这个现在已经不这样用了,我猜document.layers[firstInd].pageY表示页面中index为firstInd的层的offsetTop值,document.layers[firstInd].document.height表示页面中index为firstInd的层的offsetHeight值,不必保证是否正确,我没用过,
for (i=firstInd+1; i<document.layers.length; i++) //循环语句,和上面的循环语句类似,不解释了,请参考第30行的for语句
{
whichEl = document.layers[i];
if (whichEl.visibility != "hide") //如果whichEl的可见性不等于hide(隐藏),则
{
whichEl.pageY = nextY; //whichEl对象左上角在页面上的top重新改变到nextY上
nextY += whichEl.document.height; //nextY加上whichEl的高度
}
}
}

function initIt() //从函数名上可以知道,这是一个构造函数了
{
if (!ver4) return; //如果ver4不等于1(!=表示不等于),则返回空,即结束此函数而不执行下面的语句
if (NS4) //如果NS4为1
{
for (i=0; i<document.layers.length; i++)
{
whichEl = document.layers[i]; //这两句和行31行的解释一样,
if (whichEl.id.indexOf("Child") != -1) whichEl.visibility = "hide"; //如果whichEl的id(whichEl的id是字符串,这个可以理解吧)这个字符串里包含字符串"Child",则whichEl的可见性为隐藏,即不显示。indexOf():在字符串内查找指定的字符或字符串,并返回第一次查找到的位置,如果没有查找到则返回-1,如"abcdefg".indexOf("c")的运行结果是2
}
arrange(); //执行arrange()函数
}
else //如果NS4不为1,即IE4为1,则
{
divColl = document.all.tags("DIV"); //将document.all.tags("DIV")赋给变量divColl,document.all.tags("DIV")我没用过,猜一下,应该是将页面中所有tag(标签)为div的对象赋给变量divColl,赋值完后divColl变成数组
for (i=0; i<divColl.length; i++)
{
whichEl = divColl(i); //将divColl的第i个元素赋给whichEl
if (whichEl.className == "child") whichEl.style.display = "none"; //如果whichEl的className(css类名)等于"child",则将whichEl的样式里的显示设置为none(无),即不显示,且不占位
}
}
}

function expandIt(el)
{
if (!ver4) return;
if (IE4) //如果IE4为1,则
{
whichEl1 = eval(el + "Child"); //你的代码不全,如果没猜错,el是字符串,el+"Child"是两个字符串相加,得到的值还是字符串,但是eval(el+"Child")的结果是对象,是页面中id为el+"Child"的对象,如:el="nw",那么eval(el+"Child")结果就是id为"nwChild"的对象。至于eval()函数可以在百度上搜索其用法
for(i=1;i<=numTotal;i++) //注意numTotal是在一开始就定义的全局变量
{
whichEl = eval(scores[i] + "Child"); //同第85行,注意srores是一开始就定义的一维数组,scores[i]表示此数组里的第i个元素
if(whichEl!=whichEl1) //如果whichEl不等于whichEl1,则
{
whichEl.style.display = "none"; //whichEl的样式的显示为无,即不显示,且不占位
}
}
whichEl1 = eval(el + "Child");
if (whichEl1.style.display == "none") //如果whichEl1的样式的显示为无,则
{
whichEl1.style.display = "block"; //whichEl1的样式的显示为块,块是css里的概念,可以理解为如果whichEl1没有显示,那么就把它显示出来
}
else
{
whichEl1.style.display = "none"; //隐藏whichEl1,现在的上面都解释过,或者解释过类似的,所以就不详细解释了,有不清楚的可以再提出来
}
}
else
{
whichEl = eval("document." + el + "Child");
for(i=1;i<=numTotal;i++)
{
whichEl = eval("document." + scores[i] + "Child");
if(whichEl!=whichEl1)
{
whichEl.visibility = "hide";
}
}
if (whichEl.visibility == "hide")
{
whichEl.visibility = "show";
}
else
{
whichEl.visibility = "hide";
}
arrange(); //执行arrange()函数
}
}
onload = initIt; //页面载入完成后,执行 initIt()函数,注意不要多加上函数的()

//最后补充一下,document.layers是NetScape内特有的,而document.all是IE里特有的。
</script>

Layer 对于广大Photoshop 用户来说,可算是个法宝,然而在Web页面的设计上,使用Layer的却很少。Layer 可将页面的内容引入“层”的概念,增强了网页的处理能力。Layer 用法形如:

〈Layer name ="nametext"

top =20

left =20

width =400

clip =0,0,400,200

bgcolor =red

visibility ="show" 〉

〈!-- 此处可加上任意合乎页面规则的内容//--〉

〈/Layer〉

  Layer是Netscape 实现动态页面的方法之一,Netscape Navigator 4.0以上支持此功能。

  Layer作为页面上的一个对象具有如下属性和方法:

  Name 给出Layer的名字,便于Javascript对Layer的控制;Top、Left决定了Layer左上角在页面或其它Layer上的位置;PageX、PageY 决定了 Layer左上角在页面上的位置,它和Top、Left稍有区别;Width决定Layer的宽度;Clip决定Layer显示的区域,有x、y 或x1、y1、x2、y2两种赋值法,x、y相当于0、0、x2、y2;Bgcolor 决定Layer的背景颜色;Visibility有三个值,show和hide决定了Layer是否可见,inherit 决定Layer继承父Layer的Visibility的属性;Background决定了Layer的背景图片;Src 使得Layer可以显示其它页面。

  以上的属性可以通过Javascript动态改变,产生各种效果。

  Layer还有以下方法:

  MoveBy(dx, dy) 将Layer从当前位置向左移dx,向下移dy;MoveTo(x, y) 将Layer从当前位置移动到x、y 处,x、y为相对于页面或Layer的左上角的位置;MoveToAbsolute(x, y)将Layer从当前位置移动到x、y 处,x、y为相对于页面左上角的位置;ResizeBy(dwidth, dheight) 和ResizeTo(width, height)将重新设置Layer的显示区域;MoveAbove(layer)、MoveBelow(layer)两个方法可调整 Layer在Layer序列中的位置,但不改变Layer在页面或Layer上的水平和垂直位置。Load(sourcestring, width) 相当于改变Src的值。
------------------------------------------------------------------------------------------------------------
<script language="JavaScript1.2"> //定义script语言,语言类型为JavaScript1.2
scores = new Array(20); //定义一个有20个元素的数组scores
var numTotal=0; //定义一个名为numTotal的变量,初值为0
NS4 = (document.layers) ? 1 : 0; //如果语言支持document.layers,则变量NS4为1,否则为0
IE4 = (document.all) ? 1 : 0; //如果支持document.all,则变量IE4为1,否则为0
ver4 = (NS4 || IE4) ? 1 : 0; //NS4和IE4中有一个为1的话,则ver4为1,否则为0
//以上三行代码的实际作用就是判断一下用户浏览器的版本是不是4或4以上
if (ver4) { //如果ver4为1
with (document) { //以document对象为基础,即在该大括号中的所有属性和方法都是document对象的,如下面的write相当于document.write
write("<STYLE TYPE='text/css'>"); //在源文件中输出<STYLE TYPE='text/css'>
if (NS4) { //如果NS4为1
write(".parent {position:absolute; visibility:visible}"); //输出.parent {position:absolute; visibility:visible}
write(".child {position:absolute; visibility:visible}"); //输出.child {position:absolute; visibility:visible}
write(".regular {position:absolute; visibility:visible}") //输出.regular {position:absolute; visibility:visible}
}
else { //否则,即如果NS4不为1
write(".child {display:none}") //输出.child {display:none}
}
write("</STYLE>"); //输出</STYLE>
}
}
//上面这段IF语句,其作用为根据用户浏览器对语言的支持,输出一些CSS属性
function getIndex(el) { //定义函数
ind = null; //定义变量ind,初值为空
for (i=0; i<document.layers.length; i++) { //i从0开始,到文档中层的数量(document.layers.length)结束,每次循环i加上1
whichEl = document.layers[i]; //将变量whichEl赋值为document.layers[i],即文档中的第i个层
if (whichEl.id == el) { //如果该层的id属性和该函数的形参el相等
ind = i; //将i的值赋值给变量ind
break; //退出循环
}
}
return ind; //返回变量ind的值
} //该函数的作用就是:根据某个层的id,找出该层是文档的第几个层(从0开始)

function arrange() { //定义函数
nextY = document.layers[firstInd].pageY +document.layers[firstInd].document.height; //定义变量nextY,其值为变量的第firstInd个层在文档中的高度加上该层高度,即该层底部在文档中的位置
for (i=firstInd+1; i<document.layers.length; i++) { //从firstInd+1个层开始,直到最后,依次循环
whichEl = document.layers[i]; //将变量whichEl赋值为文档中的第i个层(注意:该变量与上一个函数中的同名变量是不相关的)
if (whichEl.visibility != "hide") { //如果该层不是隐藏的
whichEl.pageY = nextY; //将该层的高度设为nextY的值
nextY += whichEl.document.height; //并把nextY的值加上该层的高度
} //
} //
} //
//该函数的作用是将文档中从firstInd的下一个开始的所有层,其中非隐藏的层,从上到下依次排列,注意:该函数没有对层的横向坐标做任何改动
function initIt(){ //定义函数
if (!ver4) return; //如果ver4不为1,即如果用户浏览器的版本在4以下,结果函数
if (NS4) { //如果NS4为1
for (i=0; i<document.layers.length; i++) { //依次循环所有的层
whichEl = document.layers[i]; //使用变量赋值为文档中的第i个层
if (whichEl.id.indexOf("Child") != -1) whichEl.visibility = "hide"; //如果该层的ID值中包含child,设为隐藏
} //
arrange(); //排列函数
}
else { //否则,即如果NS4不为1
divColl = document.all.tags("DIV"); //定义变量divColl为文档中所有层的集合
for (i=0; i<divColl.length; i++) { //依次循环这些层
whichEl = divColl(i); //使用变量whichEl,值为第i个层
if (whichEl.className == "child") whichEl.style.display = "none"; //如果该层的className是child,则设为隐藏
} //
} //
} //
//该函数的作用是将文档中使用child样式的层设置为隐藏
function expandIt(el) { //定义函数
if (!ver4) return; //如果ver4不为1,即如果用户浏览器的版本在4以下,结果函数
if (IE4) { //如果是IE4的话
whichEl1 = eval(el + "Child"); //
for(i=1;i<=numTotal;i++){ //
whichEl = eval(scores[i] + "Child"); //
if(whichEl!=whichEl1) { //
whichEl.style.display = "none"; //
} //
} //将文档中所有的child元素中,与指定元素不同的元素设置为隐藏
whichEl1 = eval(el + "Child"); //
if (whichEl1.style.display == "none") { //
whichEl1.style.display = "block"; //
} //
else { //
whichEl1.style.display = "none"; //
} //将指定层的显示与否设置为原来的相反值
} //
else { //
whichEl = eval("document." + el + "Child"); //
for(i=1;i<=numTotal;i++){ //
whichEl = eval("document." + scores[i] + "Child"); //
if(whichEl!=whichEl1) { //
whichEl.visibility = "hide"; //
} //
} //将文档中所有的child元素中,与指定元素不同的元素设置为隐藏
if (whichEl.visibility == "hide") { //
whichEl.visibility = "show"; //
} //
else { //
whichEl.visibility = "hide"; //
} //将指定层的显示与否设置为原来的相反值
arrange(); //排列
} //
} //
onload = initIt; //定义文档加载完成时执行函数 initIt()
</script> //
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值