最近在看js的事件处理,想实践一下,用js写一个简单的页面想实现一个二级导航,目前只做到了移到一级导航上,显示二级子菜单,移出的还没做,调试的时候发现在ff和ie的环境下载入速度差不多,一刷新就好了,在chrome下刷新载入的时候刚开始一级导航和二级导航都显示了,闪了一下之后二级子菜单隐去。求解这是为什么<html>
<head>
<title>下拉菜单-js事件处理练习</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" rel="stylesheet" href="css/droplist.css" />
<script type="text/javascript" src="js/droplist.js"></script>
</head>
<body>
<div id="outer">
<ul class="nav">
<li><a href="#">一级导航1</a>
<ul>
<li><a href="#">二级导航1</a></li>
<li><a href="#">二级导航2</a></li>
<li><a href="#">二级导航3</a></li>
</ul>
</li>
<li><a href="#">一级导航2</a>
<ul>
<li><a href="#">二级导航4</a></li>
<li><a href="#">二级导航5</a></li>
<li><a href="#">二级导航6</a></li>
</ul>
</li>
<li><a href="#">一级导航3</a>
<ul>
<li><a href="#">二级导航7</a></li>
<li><a href="#">二级导航8</a></li>
<li><a href="#">二级导航9</a></li>
</ul>
</li>
<li><a href="#">一级导航4</a>
<ul>
<li><a href="#">二级导航a</a></li>
<li><a href="#">二级导航b</a></li>
<li><a href="#">二级导航c</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
oldonload();
func();
}
}
}addLoadEvent(ppnav);
// window.onload=ppnav;var EventUtil = {
addHandler : function(element, type , handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
}
else if ( element.attachEvent){
element.attachEvent("on" + type , handler)
}
else {
element["on" + type] = handler;
}
},
getTarget: function(event){
return event.target || event.srcElement;
}
} function ppnav(){
if(!document.getElementsByTagName) return false;
var lists=document.getElementsByTagName("ul");
if (!lists) return false;
for(i=0;i<lists.length;i++){
if(lists[i].className!="nav"){
lists[i].className="hideNav"
}
EventUtil.addHandler(lists[i],"mouseover",navmouseover);
//EventUtil.addHandler(lists[i],"mouseout",navmouseout);
//lists[i].onmouseover=navmouseover;
}
}function navmouseover(e){
var evt = e || window.event;
var evtTarget = evt.target || evt.srcElement;
while (evtTarget.nodeName != 'LI')
evtTarget = evtTarget.parentNode;
shownav(evtTarget);
}function shownav(targetNode){
if (!targetNode) return false;
var listItems=targetNode.getElementsByTagName("ul")[0];
if(listItems){
listItems.className="shownav";
}
}
body{
text-align: center;
font-size:18px;
}
#outer{
width:770px;
margin:0 auto;
text-align:center;
}
ul {
padding: 0;
margin: 0;
list-style: none;
}
.nav li {
position:relative;
float: left;
width: 150px;
}.hideNav {
display: none;
}
.showNav{
position:absolute;
display: block;
top: 40px;
left:0;
}ul li a{
line-height: 30px;
display:block;
font-size:18px;
border: 1px solid #ccc;
text-decoration: none;
color: #777;
background:#eee;
}
JavaScript函数ChromeInternet Explorer导航
<head>
<title>下拉菜单-js事件处理练习</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" rel="stylesheet" href="css/droplist.css" />
<script type="text/javascript" src="js/droplist.js"></script>
</head>
<body>
<div id="outer">
<ul class="nav">
<li><a href="#">一级导航1</a>
<ul>
<li><a href="#">二级导航1</a></li>
<li><a href="#">二级导航2</a></li>
<li><a href="#">二级导航3</a></li>
</ul>
</li>
<li><a href="#">一级导航2</a>
<ul>
<li><a href="#">二级导航4</a></li>
<li><a href="#">二级导航5</a></li>
<li><a href="#">二级导航6</a></li>
</ul>
</li>
<li><a href="#">一级导航3</a>
<ul>
<li><a href="#">二级导航7</a></li>
<li><a href="#">二级导航8</a></li>
<li><a href="#">二级导航9</a></li>
</ul>
</li>
<li><a href="#">一级导航4</a>
<ul>
<li><a href="#">二级导航a</a></li>
<li><a href="#">二级导航b</a></li>
<li><a href="#">二级导航c</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
oldonload();
func();
}
}
}addLoadEvent(ppnav);
// window.onload=ppnav;var EventUtil = {
addHandler : function(element, type , handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
}
else if ( element.attachEvent){
element.attachEvent("on" + type , handler)
}
else {
element["on" + type] = handler;
}
},
getTarget: function(event){
return event.target || event.srcElement;
}
} function ppnav(){
if(!document.getElementsByTagName) return false;
var lists=document.getElementsByTagName("ul");
if (!lists) return false;
for(i=0;i<lists.length;i++){
if(lists[i].className!="nav"){
lists[i].className="hideNav"
}
EventUtil.addHandler(lists[i],"mouseover",navmouseover);
//EventUtil.addHandler(lists[i],"mouseout",navmouseout);
//lists[i].onmouseover=navmouseover;
}
}function navmouseover(e){
var evt = e || window.event;
var evtTarget = evt.target || evt.srcElement;
while (evtTarget.nodeName != 'LI')
evtTarget = evtTarget.parentNode;
shownav(evtTarget);
}function shownav(targetNode){
if (!targetNode) return false;
var listItems=targetNode.getElementsByTagName("ul")[0];
if(listItems){
listItems.className="shownav";
}
}
body{
text-align: center;
font-size:18px;
}
#outer{
width:770px;
margin:0 auto;
text-align:center;
}
ul {
padding: 0;
margin: 0;
list-style: none;
}
.nav li {
position:relative;
float: left;
width: 150px;
}.hideNav {
display: none;
}
.showNav{
position:absolute;
display: block;
top: 40px;
left:0;
}ul li a{
line-height: 30px;
display:block;
font-size:18px;
border: 1px solid #ccc;
text-decoration: none;
color: #777;
background:#eee;
}
JavaScript函数ChromeInternet Explorer导航
解决方案 »
- JS如何用全面模式打开新界面?
- Extjs 2.3中的Combobox下拉框中怎么去掉分页
- SWFUpload 怎么实现上传文件有进度条
- JS滚动广告如何在JSP页面里连接数据实现动态改变图片!!
- 各位CSDN的兄弟们,有时间看一下这个贴子。谢谢
- 取整的问题
- 分享:Javascript内置方法十分方便的进行数值进制转换
- 有代表性的人数限定问题!
- 我有一个文件 myfile.txt,怎么用javascript来读取这个文件的内容,请帮忙!!!
- 怎么取到复选框对应的文本框
- 多个有onclick事件的tag套在一起怎么click的时候只触发最顶层tag的事件?
- 火狐的DOM树里面的_ON和IE的那个对应?
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>下拉菜单</title>
<style type="text/css">
body{ text-align: center;}
#outer{
width:770px;
margin:0 auto;
text-align:center;
font-size:18px;
}
ul,li {
padding: 0;
margin: 0;
list-style: none;
}
.nav li {
position:relative;
float: left;
width: 150px;
}
#outer ul li ul{
position:absolute;
top: 32px;
display: none;
}
#outer ul li ul a{border-top:none;}
ul li a{
line-height: 30px;
display:block;
font-size:18px;
border: 1px solid #ccc;
text-decoration: none;
color: #777;
background:#eee;
}
</style>
</head>
<body>
<div id="outer">
<ul class="nav">
<li><a href="#">一级导航1</a>
<ul class="showNav">
<li><a href="#">二级导航1</a></li>
<li><a href="#">二级导航2</a></li>
<li><a href="#">二级导航3</a></li>
</ul>
</li>
<li><a href="#">一级导航2</a>
<ul>
<li><a href="#">二级导航4</a></li>
<li><a href="#">二级导航5</a></li>
<li><a href="#">二级导航6</a></li>
</ul>
</li>
<li><a href="#">一级导航3</a>
<ul>
<li><a href="#">二级导航7</a></li>
<li><a href="#">二级导航8</a></li>
<li><a href="#">二级导航9</a></li>
</ul>
</li>
<li><a href="#">一级导航4</a>
<ul>
<li><a href="#">二级导航a</a></li>
<li><a href="#">二级导航b</a></li>
<li><a href="#">二级导航c</a></li>
</ul>
</li>
</ul>
</div>
<script type="text/javascript">
var ul=document.getElementById("outer").getElementsByTagName("ul")[0];
if(!document.all){
var elem_child = ul.childNodes;
for(var i=0; i<elem_child.length;i++){
if(elem_child[i].nodeName == "#text" && !/\s/.test(elem_child.nodeValue)){
ul.removeChild(elem_child[i]);
}
}
}
var li=ul.childNodes;
for(var i=0;i<li.length;i++){
li[i].onmouseover=function(){this.getElementsByTagName("ul")[0].style.display="block";};
li[i].onmouseout=function(){ this.getElementsByTagName("ul")[0].style.display="none"; };
}
</script>
</body>
</html>