博客列表 >jsTAB自动切换特效作业-php线上五班

jsTAB自动切换特效作业-php线上五班

哥特的博客
哥特的博客原创
2019年04月05日 15:43:251042浏览

作业总结:

  1. 新建变量:

    新建一个变量num赋值0,新建一个变量timer赋值 null,获取标题集合的id并赋值变量noticeTit,获取内容div集合的id并赋值变量noticeCon,用noticeTit.getElementByTagName('li')获取一下li标签赋值给变量title,用noticeCon.ElementsByClassName获取一下内容集合的class并赋值给con变量。

  2. 循环并设置鼠标方法

    使用for来循环一下,当变量  i 小于 title的长度的时候自增1,循环体内的i值赋值给title的索引(下标),title的下标连接鼠标事件onmouseenter 的函数,当鼠标移动到这个当前的这个标签的时候执行函数体内的动作,先清除一下定时器,执行showTab函数,函数传参当前的this.index索引值,把this.index值赋值给变量num。
    使用title[i].onmouseleave=function执行方法,设置一个定时器定时器内每隔1秒执行autoPlay函数,并且把这个定时器赋值给变量timer。

  3. 创建showTab函数

    创建函数showTab,括号内传值(i) .设置for循环,在循环体内如果变量 j 小于 con.length 的长度,j++。循环体内title变量的样式修改为空,con设置none隐藏。循环体外使用title[i].style.className='select' ,con.style.display='block'.意思是给当前下标的title添加一个class样式和让内容块con显示,下标值来自于函数传参的  i 。

  4. 创建autoPlay()函数

    先让num++,因为自动播放了,需要让标题和内容跳到显示下一个。如果num的值等于title的长度说明已经到最后一个了,就清空num让num等于0。
    if体外执行showTab(num)  num的值已经是自增完或者是清空为0的值了,这样跳回showTab函数再运行即可。



企业微信截图_15544476051553.png

实例

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>tab</title>
	<style>
	*{
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 12px;
}
a{text-decoration: none;color: #333;}
#notice{
	width: 498px;
	border: 1px solid #eee;
	overflow: hidden;
	margin: 50px auto;
}
#notice-tit{
	background: #f7f7f7;
	height: 30px;
}
#notice-tit li{
	float: left;
	width: 70px;
	height:29px;
	line-height: 29px;
	text-align: center;

}
.mod{margin: 10px;}
 .select{
	background: #fff;
	font-weight:bolder;
	border-left: 1px solid #eee;
	border-right:1px solid #eee;
	border-bottom: 1px solid #fff;

}
#notice-con li{
	float: left;
	width: 49%;
	height: 26px;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;

}
	
	</style>
	
</head>
<body>
	<div id="notice">
		<div id="notice-tit">
			<ul>
				<li class="select"><a href="javascript:;">公告1</a></li>
				<li><a href="javascript:;">规则2</a></li>
				<li><a href="javascript:;">论坛3</a></li>
				<li><a href="javascript:;">安全4</a></li>
				<li><a href="javascript:;">工艺5</a></li> 
			</ul>
		</div>
		<div id="notice-con">
			<div class="mod" >
				<ul>
					<li><a href="javascript:;">新闻内容测试新闻内容测试新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试1</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
				</ul>
			</div>
			<div class="mod" style='display:none'>
				<ul>
					<li><a href="javascript:;">新闻内容测试2</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
				</ul>
			</div>
			<div class="mod" style='display:none'>
				<ul>
					<li><a href="javascript:;">新闻内容测试3</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
				</ul>
			</div>
			<div class="mod" style='display:none'>
				<ul>
					<li><a href="javascript:;">新闻内容测试4</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
				</ul>
			</div>
			<div class="mod" style='display:none'>
				<ul>
					<li><a href="javascript:;">新闻内容测试5</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
					<li><a href="javascript:;">新闻内容测试</a></li>
				</ul>
			</div>
		</div>
	</div>
<script type="text/javascript">
		window.onload=function(){ 
		 	// 获取一下标题id的div
			var noticeTit=document.getElementById('notice-tit');
			// 获取一下内容id的div
			var noticeCon = document.getElementById('notice-con');
			// 获取一下标题的li元素集合
			var title = noticeTit.getElementsByTagName('li');
			// 获取一下内容class的集合
			var con = noticeCon.getElementsByClassName('mod');

			// 设置数量的初始值
			var num = 0;
			//存放定时器
			var timer = null;
			
			// 设置元素样式的函数
		
		
			// 自动切换
				// 循环一下标题的长度
			for (var i = 0; i < title.length; i++) {
				// 将循环的i赋值给title索引下标
				 title[i].index=i;
				 //console.log(title[i].index);

				 title[i].onmouseenter=function(){
				 	clearInterval(timer) //清除一下定时器
				 	// 调用showTab函数传值当前的索引
				 	showTab(this.index) 
				 	num=this.index;//  拿到长度的值
				 }
				 // 当鼠标移出的时候定时器自动动,当鼠标移入停止
				 title[i].onmouseleave=function(){
				 timer=setInterval(autoPlay,3000)
				 }
			}
				function showTab(i){
				// 先循环一遍内容div的长度,把所循环到的内容+标题的样式进行修改
				for (var j = 0; j < con.length; j++) {
					con[j].style.display='none';
					title[j].className=''
				}
				// 把传进来的参数调用,让对应的元素获取样式
				con[i].style.display='block';
				title[i].className='select'
			}
			
			function autoPlay(){
				// 当执行这个自动播放函数的时候,把num值+1这样就进入了下一个元素
				num++;
				// 如果num的值已经等于标题长度了,就清零num然后再执行shotTab函数
				if(num==title.length){
					num=0;
				}
				showTab(num)
			}
		 }
	</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议