老师帮我看看我的二级菜单的问题

来源:6-1 案例总结

Wonwayshon

2020-09-27 20:50:45

老师帮我看看,二级菜单内文字变化异常,还有二级菜单收回和菜单选中变色也有问题。

我还有一个问题,当onmouseover事件触发后会调用后面的function();,如果onmouseover=function(){}所在的slideImg()函数没有被调用,触发时间是否会执行function内的内容呢,如果依然可以执行,那么可以把所有的时间都放到一个单独的函数内吗

<!DOCTYPE html>
<html>
<head>
	<title>轮播图</title>
	<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
</head>
<body>
	<div class="main" id="main">
		<div class="menu-box"></div>
		<div class="sub-menu hide" id="sub-menu">
			<div class="inner-box">
				<div class="sub-inner-box">
					<div class="title">手机配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
				</div>
			</div>
			<div class="inner-box">
				<div class="sub-inner-box">
					<div class="title">电器</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">手配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
				</div>
			</div>
			<div class="inner-box">
				<div class="sub-inner-box">
					<div class="title">家具</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
				</div>
			</div>
			<div class="inner-box">
				<div class="sub-inner-box">
					<div class="title">家具</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
				</div>
			</div>
			<div class="inner-box">
				<div class="sub-inner-box">
					<div class="title">其他</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
					<div class="title">配件</div>
					<div class="sub-row">
						<span class="bold mr10">手机通讯:</span>
						<span class="mr10 ml10">手机维修</span>
						<a href="#">手机</a>
					</div>
				</div>
			</div>
		</div>
		<div class="menu-content" id="menu-content">
			<div class="menu-item">
				<a href="">
					<span>手机、配件</span>
					<i>&#xe665;</i>
				</a>
				<a href="">
					<span>手机、配件</span>
					<i>&#xe665;</i>
				</a>
				<a href="">
					<span>手机、配件</span>
					<i>&#xe665;</i>
				</a>
				<a href="">
					<span>手机、配件</span>
					<i>&#xe665;</i>
				</a>
				<a href="">
					<span>手机、配件</span>
					<i>&#xe665;</i>
				</a>
			</div>
		</div>
		<!--图片-->
		<div class="banner" id="banner">
			<a href="#">
				<div class="banner-slide slide1 slide-active"></div>
			</a>
			<a href="#">
				<div class="banner-slide slide2"></div>
			</a>
			<a href="#">
				<div class="banner-slide slide3"></div>
			</a>
		</div>
		<!--上一张下一张按钮-->
		<a href="javascript:void(0)" class="button prev" id="prev"></a>
		<a href="javascript:void(0)" class="button next" id="next"></a>
		<!--圆点导航-->
		<div class="dots" id="dots">
			<span class="active"></span>
			<span></span>
			<span></span>
		</div>
	</div>
	<script type="text/javascript" src="js/script.js"></script>
</body>
</html>

*{
	margin: 0;
	padding: 0;
}

@font-face{
	font-family: "iconfont";
	src: url("../images/font/iconfont.eot");
	src: url("../images/font/iconfont.eot") format("embedded-opentype"),
		 url("../images/font/iconfont.woff") format("woff"),
		 url("../images/font/iconfont.ttf") format("truetype"),
		 url("../images/font/iconfont.svg#iconfog") format("svg");
}

a:link,a:visited{
	text-decoration: none;
	color: #333;
}

ul{
	list-style: none;
}

body{
	font-family: "微软雅黑";
	color: #14191e;
}

.main{
	width: 1200px;
	height: 460px;
	margin: 30px auto;
	overflow: hidden;
	position: relative;
}

.banner{
	width: 1200px;
	height: 460px;
	overflow: hidden;
	position: relative;
	display: ;
}

.banner-slide{
	width: 1200px;
	height: 460px;
	background-repeat: no-repeat;
	position: absolute;
	display: none; 
}

.slide1{
	background-image: url("../images/bg1.jpg");
}

.slide2{
	background-image: url("../images/bg2.jpg");
}

.slide3{
	background-image: url("../images/bg3.jpg");
}

.slide-active{
	display: block;
}

.button{
	width: 40px;
	position: absolute;
	height: 80px;
	left:284px;
	top: 50%;
	margin: -40px;
	background: url("../images/arrow.png") no-repeat center center;
}

.next{
	left: auto;
	right: 40px;
}

.prev{
	transform: rotate(180deg);
}

.button:hover{
	background-color: #333;
	opacity: 0.8;
	filter: alpha(opacity=80);
}

.dots{
	position: absolute;
	right: 0;
	bottom: 24px;
	text-align: right;
	right: 10px;
} 

.dots span{
	display: inline-block;
	width: 12px;
	height: 12px;
	background-color: rgba(7,17,27,0.4);
	border-radius: 50%;
	margin-right: 8px;
	line-height: 12px;
	box-shadow: 0 0 0 2px rgba(255,255,255,0.8) inset;
	cursor: pointer;
}

.dots span.active{
	box-shadow: 0 0 0 2px rgba(7,17,27,0.4) inset;
	background: #fff;
}

.menu-box{
	width: 244px;
	height: 460px;
	position: absolute;
	left: 0;
	top: 0;
	background:rgba(7,17,27,0.5);
	opacity: 0.5;
	z-index: 1;
}

.menu-content{
	width: 244px;
	height: 454px;
	position: absolute;
	left: 0;
	top: 0;
	z-index: 2;
	padding-top: 6px;
}

.menu-item{
	height: 64px;
	line-height: 66px;
	font-size: 16px;
	padding: 0 24px;
}

.menu-item a:link, .menu-item a:visited{
	color: #fff;
}

.menu-item a{
	display: block;
	border-bottom: 1px solid rgba(255,255,255,0.2);
	padding: 0 8px;
	position: relative;
}

.menu-item i{
	font-family: "iconfont";
	position: absolute;
	right: 32px;
	font-size: 24px;
	top: 0;
	font-style: normal;
	font-weight: normal;
	color: rgba(244,255,255,0.5);
}

.sub-menu{
	width: 730px;
	height: 458px;
	border: 1px solid #d9dde1;
	background: #fff;
	position: absolute;
	top: 0;
	left: 244px;
	z-index: 999;
	box-shadow: 0 4px 8px 0 rgba(0,0,0,0.1);
}

.inner-box{
	width: 100%;
	height: 100%;
	background:url(../images/fe.png) no-repeat;
}

.sub-inner-box{
	width: 652px;
	margin-left: 40px;
	overflow: hidden;
}

.title{
	color: #f01414;
	font-size: 16px;
	line-height: 16px;
	margin: 28px 0 30px 0;
	font-weight: bold;
}

.bold{
	font-weight: bold;
}

.mr10{
	margin-right: 10px;
}

.ml10{
	margin-left: 10px;
}

.subrow{
	margin-bottom: 25px;
}

.hide{
	display: none;
}


var index=0,
	timer=null,
	dots=byId("dots").getElementsByTagName("span"),
	pics=byId("banner").getElementsByTagName("div"),
	prev=byId("prev"),
	next=byId("next"),
	menu=byId("menu-content"),
	menuItems=menu.getElementsByClassName("menu-item"),
	subMenu=byId("sub-menu"),
	innerBox=subMenu.getElementsByClassName("inner-box"),
	len=pics.length;

//代替getElementById
function byId(id){
	return typeof(id)==="string"?document.getElementById(id):id;
}

function slideImg(){
	var main=byId("main");
	main.onmouseover=function(){
		if(timer) clearInterval(timer);
	}
	main.onmouseout=function(){
		timer=setInterval(function(){
			index++;
			if(index>=len){
				index=0;
			}
			changeImg();
		},3000)
	}
	main.onmouseout();
	for(var d=0;d<len;d++){
		dots[d].id=d;
		dots[d].onclick=function(){
			index=this.id;
			changeImg();
		}
	}

	next.onclick=function(){
		index++;
		if(index>=len){
			index=0;
		}
		changeImg();
	}
	prev.onclick=function(){
		index--;
		if(index<0){
			index=len-1;
		}
		changeImg();
	}
	for(var m=0;m<menuItems.length;m++){
		menuItems[m].setAttribute("data-index",m)
		menuItems[m].onmouseover=function(){
			subMenu.className="sub-menu";
			for(var j=0;j<innerBox.length;j++){
				innerBox[j].style.display="none";
				menuItems[j].style.background="none";
			}
			var idx=this.getAtribute("data-index");
			innerBox[idx].style.display="block";
			menuItems[idx].style.background="rgba(0,0,0,0.1)";
		}
	}
	menu.onmouseout=function(){
		subMenu.className="sub-menu hide";
	}
	subMenu.onmouseover=function(){
		this.className="sub-menu";
	}
	subMenu.onmouseout=function(){
		this.className="sub-menu hide";
	}
}

function changeImg(){
	//alert(index);
	for(var i=0;i<len;i++){
		pics[i].style.display="none";
		dots[i].className="";
	}
	pics[index].style.display="block";
	dots[index].className="active";
}



slideImg();


写回答

1回答

好帮手慕阿园

2020-09-28

同学你好

1,同学html中对菜单的设置上有些问题,下面的设置有的是跟其他的一样的,这里并不是一样的哦,同学可以对照源码以及老师的讲解修改一下,有些标签缺失了,导致在js中获取异常

http://img.mukewang.com/climg/5f7152ac09b1110908520429.jpg

2,如下单词书写有误,应该是getAttribute

http://img.mukewang.com/climg/5f7152bf09d29aa304970136.jpg

3,如果不调用slideImg();,那么其中的方法都不会执行的

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


0

0 学习 · 9666 问题

查看课程