请老师帮忙,为什么鼠标移入和移出不行

请老师帮忙,为什么鼠标移入和移出不行

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="css.css">
</head>
<body>
<div id="main" class="main" >
<!-- 标题栏 -->
<div class="tab" id="tab">
<ul class="item">
<li class="li-active">首页</li>
<li>点击看看</li>
<li>会自动的</li>
<li>我的网站</li>
</ul>
</div>
<!-- banner图 -->
<div class="banner" id="banner">
<div class="slider slider1 active"></div>
<div class="slider slider2"></div>
<div class="slider slider3"></div>
<div class="slider slider4"></div>
</div>
</div>
<script type="text/javascript" src="js.js"></script>
</body>
</html>
/*定义全局样式*/
  *{
  	padding: 0;
  	margin: 0;
  	font-family: "Microsoft YaHei";
  	font-size: 18px;
  		
  }


/*整个轮播图居中显示*/
  .main{
	height: 520px;
	width:1200px;
	margin: 0 auto;
  }



/*tab*/
 .tab{
 	width: 1200px;
 	height: 60px;
 }

/*每个标题的通用样式*/
 .item{
 	list-style: none;
 	overflow: hidden;
 }

 .item li{
    float: left;
    
    font-weight: bold;
    color:#666;
    width:300px;
    height: 60px;
    line-height: 60px;
    text-align: center;
}

 .li-active{
    background-color:#ffcc00;
    border-radius: 8px;
    font-size: 22px;
}



/*banner通用样式*/
.banner{
	width: 1200;
	height: 460px;
	overflow: hidden;
}
.slider{
	width: 1200px;
	height: 460px;
	float: left;
	display: none;
}

.active{
	display: block;
}

/*插入图片*/
.slider1{
	background-image: url(img/1.jpg);
}
.slider2{
	background-image: url(img/3.jpg);
}
.slider3{
	background-image: url(img/4.jpg);
}
.slider4{
	background-image: url(img/5.jpg);
}
// 定义全局变量
var index =0, //当前显示图片的索引,默认值为0
	timer=null,
	main=byID(sss),
	li=byID(tab).getElementsByTagName("li"),
	pics=byID(banner).getElementsByTagName("div"),
	size=li.length;
	










//封装getelementbyid
function byID(id){
	return typeof(id) === "string" ? document.getElementById(id):id;
}


//封装通用的跨浏览器处理事件
function addhandler(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;
	}
}

//封装切换
function change(){
	//遍历所有图片以及选项
	for(var d=0;d<size;d++){
			//隐藏选项样式
			li[d].className="";
			//隐藏所有图片
			pics[d].style.display="none";
		}
		//显示选项的样式
		li[index].className="li-active";
		//显示图片
		pics[index].style.display="block";
}

//封装定时器自动轮播
function startAutoPlay(){
	timer = setInterval(function(){
		index++;
		if (index>=size) index=0;
		change();
	},1000)
}

//封装清楚定时器停止自动轮播
function stopAutoPlay(){
	if (timer) {
		clearInterval(timer);
	}
}








//选项切换
for(var i=0;i<size;i++){
	li[i].setAttribute("ids",i);
	addhandler(li[i],"click",function(){
		index =this.getAttribute("ids");
		change();
	})
}


//鼠标移入,停止轮播
addhandler(main,"mouseover",stopAutoPlay);

//鼠标移出,自动轮播
addhandler(main,"mouseout",startAutoPlay);

//自动轮播
startAutoPlay();


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,

因为tab,banner等是id值,可以直接使用元素,不需要获取。例如:

http://img1.sycdn.imooc.com//climg/5d5cac5b00019bed02360031.jpg

http://img1.sycdn.imooc.com//climg/5d5cac600001200c03830030.jpg

但是一般不推荐这样使用。

而在代码中参数不加引号,传入tab其实就已经是获取的tab元素了:

http://img1.sycdn.imooc.com//climg/5d5caca500013ca608360160.jpg

http://img1.sycdn.imooc.com//climg/5d5cacab0001648e04030032.jpg

输出参数id并不是你传入的tab单词,而是tab元素哦。

而main是因为你定义了同名的变量,直接用main获取的是元素,而定义了main变量之后就是一个普通的变量了,所以获取不到元素。需要添加上引号,这样在byID方法中判断参数为字符串,就会通过document.getElementById方法去获取元素了。

自己可以测试理解下,祝学习愉快!

好帮手慕星星 2019-08-20 19:26:19

同学你好,

这里获取main元素,参数要添加引号,变为字符串哦:

http://img1.sycdn.imooc.com//climg/5d5bd8d300011ff504280186.jpg

可以重新测试下,祝学习愉快!

  • 提问者 精慕门9185807 #1
    为啥下面的byid不需要加引号
    2019-08-20 20:12:51
  • 提问者 精慕门9185807 #2
    然后我不要用main,用了其他名字比如SSS就不用加引号
    2019-08-20 20:13:39
提问者 精慕门9185807 2019-08-20 17:56:51

全局变量那里main=byID(main)才对

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师