标题是用无序列表,内容放在div里,内容div里面使用无序列表;
实现逻辑:
1.通过dom操作找到标题里的li;需要给他添加onmouseover事件;
2.给触发了onmouseover事件的li设置效果
3.通过dom操作找到内容里的ul,当触发onmouseover 事件的时候给ul添加display属性;
注意事项:需要使用this关键字,在添加onmouse事件时,需要给标题里的li设置他的index,这样做就可以把内容的ul与标题里的li关联起来;
this 表示使用某个函数的对象
index则返回列表中的索引位置;
代码如下:
var oLi = document.getElementById("nav").getElementsByTagName("li");
var oUl = document.getElementById("content").getElementsByTagName("ul");
for (var i=0;i<oLi.length;i++) {
oLi[i].index = i;
/*index 返回列表中选项的索引位置
本例通过循环,把每个nav中的li的索引记录下来,用来关联content中的li.通过控制nav,来显示相应的内容*/
oLi[i].onmouseover = function () {
for(var j=0;j<oLi.length;j++)
{
oLi[j].className="";
this.className="current";
}
for(var j=0;j<oUl.length;j++)
{
oUl[j].style.display="none";
oUl[this.index].style.display="block";
/*
记录下来的索引值在这个地方使用,this指添加onmouse事件的oLi[i]
this.index 就是选中的nav中的li的索引*/
}
}
}
css部分需要注意的是不同的选项会显示不一样的内容,涉及到高度的问题;通过overflow属性,值设为hidden;浏览器就会自动根据不同的宽度显示;
代码如下:
body,
ul,
li {
margin: 0;
padding: 0;
}
#outer {
width: 450px;
margin: 0 auto;
}
#nav {
background: #000;
overflow: hidden;
border: 1px solid #000;
zoom: 1;
}
#nav li {
color: #ccc;
float: left;
padding: 0 20px;
list-style-type: none;
height: 30px;
line-height: 30px;
}
#nav li.current {
background: #ccc;
color: #000;
}
#content{
border: 1px solid #000;
border-top-width: 0;
}
#content ul{
margin: 0 30px;
padding: 10px 0;
display: none;
line-height: 25px;
}
html部分就是无序列表的使用
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="s.css">
</head>
<body>
<div id="outer">
<ul id="nav">
<li class="current">第一课</li>
<li>第二课</li>
<li>第三课</li>
</ul>
<div id="content">
<ul style="display:block;">
<li>网页特效原理分析</li>
<li>响应用户操作</li>
<li>提示框效果</li>
<li>事件驱动</li>
<li>元素属性操作</li>
<li>动手编写第一个js特效</li>
<li>引入函数</li>
<li>网页换肤效果</li>
<li>展开/收缩播放列表效果</li>
</ul>
<ul>
<li>改变网页背景颜色</li>
<li>函数传参</li>
<li>高重用性函数的编写</li>
<li>126邮箱全选效果</li>
<li>循环及遍历操作</li>
<li>调试器的简单使用</li>
<li>典型循环的构成</li>
<li>for循环配合if判断</li>
<li>className的使用</li>
<li>innerHTML的使用</li>
<li>戛纳印象效果</li>
<li>数组</li>
<li>字符串连接</li>
</ul>
<ul>
<li>JavaScript组成:ECMAScript、DOM、BOM,JavaScript兼容性来源</li>
<li>JavaScript出现的位置、优缺点</li>
<li>变量、类型、typeof、数据类型转换、变量作用域</li>
<li>闭包:什么是闭包、简单应用、闭包缺点</li>
<li>运算符:算术、赋值、关系、逻辑、其他运算符</li>
<li>程序流程控制:判断、循环、跳出</li>
<li>命名规范:命名规范及必要性、匈牙利命名法</li>
<li>函数详解:函数构成、调用、事件、传参数、可变参、返回值</li>
<li>定时器的使用:setInterval、setTimeout</li>
<li>定时器应用:站长站导航效果</li>
<li>定时器应用:自动播放的选项卡</li>
<li>定时器应用:数码时钟</li>
<li>程序调试方法</li>
</ul>
</div>
</div>
<script src="s.js"></script>
</body>
</html>