请教高手
JS文件的源代码部分有些不明白,请指教。。。
先看源代码:
if (isvisible == true)
{
vDiv = document.all("menuDiv");
mX = window.event.clientX + document.body.scrollLeft;//检索到鼠标移动到的X坐标+横向滚动条位置
mY = window.event.clientY + document.body.scrollTop;//检索到鼠标移动到的Y坐标+纵向滚动条位置
if ((mX < parseInt(vDiv.style.left)) || (mX > parseInt(vDiv.style.left)+vDiv.offsetWidth) || (mY < parseInt(vDiv.style.top)-h) || (mY > parseInt(vDiv.style.top)+vDiv.offsetHeight)){//简单的说法就是比较鼠标坐标值与子菜单坐标值
vDiv.style.visibility = "hidden";//只要满足以上任一条件,子菜单就隐藏
isvisible = false;//返回一个布鲁值后结束
}
}
}
function ShowMenu(vMnuCode) {
vSrc = window.event.srcElement;//检索事件的对象,在这里就是检索到鼠标移到对象上而找到主菜单元素
vMnuCode = "
";//得到子菜单的HTML文本,在这里可以定义子菜单的外观
h = vSrc.offsetHeight + 4;//主菜单本身高度+主菜单元素本身高度+4,可以通过调整此数字控制主菜单和子菜单的间距,此值很重要,因为在HideMenu()中要调用,如果不要此值,就不能在t后面添加,否则会使菜单显示不正常
l = vSrc.offsetLeft - 10;//主菜单的X坐标-10,可以通过调整此数字控制主菜单和子菜单的缩进
t = vSrc.offsetTop + h;//主菜单的Y坐标
vParent = vSrc.offsetParent;//定义元素的坐标系统
while (vParent.tagName.toUpperCase() != "BODY")//在vParent元素的标记符是大写BODY之前循环,因为在后面设置innerHTML属性时,不能在文档加载时设置
{
l += vParent.offsetLeft;//+=左运算数加右运算数,和赋值给左运算数
t += vParent.offsetTop;
vParent = vParent.offsetParent;//重新定义元素的坐标系统
} menuDiv.innerHTML = vMnuCode;//interHTML:元素包含的HTML文本。可以用指定的HTML文本替换元素的内容,在这里就是利用它把子菜单的HTML文本加入menuDIV对象的标记符内。
menuDiv.style.top = t;//设置top值
menuDiv.style.left = l;//设置left值
menuDiv.style.visibility = "visible";//设置显示
isvisible = true;//返回一个布鲁值,以便HideMenu()调用
}
//-->
注释是我自己的理解,如果有错误的地方请指出。。。
现在有这样几个问题要问:
1.红色部分代码的含义
2.红色部分代码是否与页面代码中的onload=""有联系,因为我在页面代码中去掉了onload="",没有任何影响。