动态下拉菜单编写笔记

分类:未分类

css&xhtml

js

(function(){
var subMenu=document.getElementById("nav").getElementsByTagName("ul");
for(var i=0;i<subMenu.length;i++){
subMenu[i].style.display="none";
(function(o){
var oP=o.parentNode;
oP.onmouseover=function(e){if(!contains(this,e)){o.style.display="block";animation();}}
oP.onmouseout=function(e){if(!contains(this,e)){o.style.display="none";animClear();}}
//animation
var obj=o.getElementsByTagName("li");var h=12;
function animation(){
if( h<28&h>=12){
for(var i=0;i<obj.length;i++){obj[i].style.lineHeight=h+"px";h=h+0.2;}
setTimeout(animation,10);
}
}
function animClear(){h=12;clearTimeout(setTimeout("")-1);}
})(subMenu[i]);
}
//定义检查
function contains(o1,e/*event*/){
if (!e) {var e=window.event;e.relatedTarget=e.type=="mouseover"?e.fromElement:e.toElement;}
var o2=e.relatedTarget;
return (o1.contains ? o1.contains(o2) || o1 == o2 : o1.compareDocumentPosition(o2)& 16||!o1.compareDocumentPosition(o2));
}
})();

这两天改写的导航栏下拉菜单代码 ,原先的代码有问题,一直没时间改,总于算写完了 ,编写遇到不少问题,不过也对许多问题的认识加深了不少。先暂且列个提纲,有空补上。如果有什么bug,望不吝指教。

  • 冒泡事件模型
  • setTimeout函数
  • contain()&compareDocumentPosition()
  • 作用域理解
发表于:2008/11/18 10:35 | 46 views | 1条讨论

共有1条评论,发表一条新评论>>

  1. DC says:

    沒有中文注解

    JS不精,前來觀摩!

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

回顶部