可以把大DIV(包含页签P和内容ul部分)放在鼠标移入事件内
不知道
经测试运行ok,可以直接复制,有问题的话大家可以指出来交流一下。
你这个是错误的,你的contents都没遍历,直接contents[i]
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
.wrap {
height: 170px;
width: 490px;
margin: 60px auto;
overflow: hidden;
position: relative;
margin: 100px auto;
}
.wrap ul {
position: absolute;
}
.wrap ul li {
height: 170px;
}
.wrap ol {
position: absolute;
right: 5px;
bottom: 10px;
}
.wrap ol li {
height: 20px;
width: 20px;
background: #ccc;
border: solid 1px #666;
margin-left: 5px;
color: #000;
float: left;
line-height: center;
text-align: center;
cursor: pointer;
}
.wrap ol .on {
background: #E97305;
color: #fff;
}
</style>
<script type="text/javascript">
window.onload = function () {
var wrap = document.getElementById('wrap'),
pic = document.getElementById('pic'),
list = document.getElementById('list').getElementsByTagName('li'),
index = 0,
timer = null;
//自动播放li
timer = setInterval(autoPlay, 1000);
//封装自动切换函数
function autoPlay() {
index++;
if (index >= list.length) {
index = 0;
}
picChange(index);
}
//封装切换图片函数
function picChange(curindex) {
for (i = 0; i < list.length; i++) {
list[i].className = '';
}
//li自动高亮
list[curindex].className = 'on';
pic.style.top = -(curindex * 170) + "px";
}
//封装定时器函数
function intimer() {
timer = setInterval(function () {
index++;
if (index >= list.length) {
index = 0;
}
//将其他的li高亮清除
for (i = 0; i < list.length; i++) {
list[i].className = '';
}
//li自动高亮
list[index].className = 'on';
pic.style.top = -(index * 170) + "px";
}, 1000)
}
//鼠标滑过和离开状态
for (let j = 0; j < list.length; j++) {
pic.onmouseover = function () {
clearInterval(timer);
}
index = j;
pic.onmouseout = function () {
console.log(index)
intimer();
}
}
}
</script>
</head>
<body>
<div class="wrap" id='wrap'>
<ul id="pic">
<li><img src="http://img.mukewang.com/54111cd9000174cd04900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111dac000118af04900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d9c0001998204900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d8a0001f41704900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d7d00018ba604900170.jpg" alt=""></li>
</ul>
<ol id="list">
<li class="on">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
</div>
</body>
</html>
不错 ,有想像
断点打一下试试
是没有计算好个数
已解决,是结构问题,不细心导致
提示为空,说明你没有获取到正确的DOM元素,用console.log检查下。
window.onload=function(){
var menu = document.getElementById('menu');
var item = menu.getElementsByTagName('div');
for(var i = 0; i < item.length; i++) {
item[i].onclick = function() {
for(var i = 0; i < item.length; i++) {
item[i].children[1].style.display = 'none';
}
this.children[1].style.display = 'block';
}
}
window.onload=function(){
window.onload 后面是一个等于
typeof id == 你写了3个等号
用 ul li 比较规范一点,不建议使用p标签哦
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;
padding:0;
list-style:none;}
.wrap{height:170px;
width:490px;
margin:60px auto;
overflow: hidden;
position: relative;
margin:100px auto;}
.wrap ul{position:absolute; transition: all 1s;
-webkit-transition: all 1s; /* Safari */ }
.wrap ul li{height:170px;}
.wrap ol{position:absolute;
right:5px;
bottom:10px;}
.wrap ol li{height:20px; width: 20px;
background:#ccc;
border:solid 1px #666;
margin-left:5px;
color:#000;
float:left;
line-height:center;
text-align:center;
cursor:pointer;}
.wrap ol .on{background:#E97305;
color:#fff;}
</style>
<script type="text/javascript">
window.onload=function(){
var wrap=document.getElementById('wrap'),
pic=document.getElementById('pic'),
list=document.getElementById('list').getElementsByTagName('li'),
index=0,
timer=null;
// 定义并调用自动播放函数
function autoplay(){
index++;
if(index == list.length){
index = 0;
}
autoImg()
}
timer = setInterval(function(){ autoplay() },3000)
// 定义图片切换函数
function autoImg(){
for( var i=0; i<list.length;i++){
list[i].className = "";
}
list[index].className = "on";
pic.style.marginTop = index*-170+"px";
}
// 鼠标划过整个容器时停止自动播放
wrap.onmouseover = function(){/*鼠标引入,清除定时器,轮播图停止*/
clearInterval(timer);
};
// 鼠标离开整个容器时继续播放至下一张
wrap.onmouseout = function(){/*鼠标移出,重新调用定时器,轮播图开始*/
timer = setInterval(function(){ autoplay() },3000)
};
// 遍历所有数字导航实现划过切换至对应的图片
for( var i = 0; i<list.length;i++){
list[i].index = i;
list[i].onmousemove = function(){
index = this.index ;// 重置索引值
// alert(this.index)
autoImg()
}
}
}
</script>
</head>
<body>
<div class="wrap" id='wrap'>
<ul id="pic">
<li><img src="http://img.mukewang.com/54111cd9000174cd04900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111dac000118af04900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d9c0001998204900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d8a0001f41704900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d7d00018ba604900170.jpg" alt=""></li>
</ul>
<ol id="list">
<li class="on">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
</div>
</body>
</html>
amy
var ps=$('menu-ll').getElementsByTagName('p');//获取p跟ul的下标 //错误
改成var ps = document.getElementsByTagName('p')
var uls=$('menu-hh').getElementsByTagName('ul'); //错误
改成var uls= document.getElementsByTagName('ul')
还有这一段
if(sy>=ps.length){//做一个判断以至于不会一直加下去
ps=0;
}
ps = 0 ///你想表达 sy = 0 ,大哥仔细点,都是很基础的,js代码不要放在html前面,
还要有自己的思维同学
恭喜你
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;
padding:0;
list-style:none;}
.wrap{height:170px;
width:490px;
margin:60px auto;
overflow: hidden;
position: relative;
margin:100px auto;}
.wrap ul{position:absolute; transition: all 1s;
-webkit-transition: all 1s; /* Safari */ }
.wrap ul li{height:170px;}
.wrap ol{position:absolute;
right:5px;
bottom:10px;}
.wrap ol li{height:20px; width: 20px;
background:#ccc;
border:solid 1px #666;
margin-left:5px;
color:#000;
float:left;
line-height:center;
text-align:center;
cursor:pointer;}
.wrap ol .on{background:#E97305;
color:#fff;}
</style>
<script type="text/javascript">
window.onload=function(){
var wrap=document.getElementById('wrap'),
pic=document.getElementById('pic'),
list=document.getElementById('list').getElementsByTagName('li'),
index=0,
timer=null;
// 定义并调用自动播放函数
function autoplay(){
index++;
if(index == list.length){
index = 0;
}
autoImg()
}
timer = setInterval(function(){ autoplay() },3000)
// 定义图片切换函数
function autoImg(){
for( var i=0; i<list.length;i++){
list[i].className = "";
}
list[index].className = "on";
pic.style.marginTop = index*-170+"px";
}
// 鼠标划过整个容器时停止自动播放
wrap.onmouseover = function(){/*鼠标引入,清除定时器,轮播图停止*/
clearInterval(timer);
};
// 鼠标离开整个容器时继续播放至下一张
wrap.onmouseout = function(){/*鼠标移出,重新调用定时器,轮播图开始*/
timer = setInterval(function(){ autoplay() },3000)
};
// 遍历所有数字导航实现划过切换至对应的图片
for( var i = 0; i<list.length;i++){
list[i].index = i;
list[i].onmousemove = function(){
index = this.index ;// 重置索引值
// alert(this.index)
autoImg()
}
}
}
</script>
</head>
<body>
<div class="wrap" id='wrap'>
<ul id="pic">
<li><img src="http://img.mukewang.com/54111cd9000174cd04900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111dac000118af04900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d9c0001998204900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d8a0001f41704900170.jpg" alt=""></li>
<li><img src="http://img.mukewang.com/54111d7d00018ba604900170.jpg" alt=""></li>
</ul>
<ol id="list">
<li class="on">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
</div>
</body>
</html>
经验+1
是要有这样的好习惯
style="display: none"
其实添加成功了,但是你把他隐藏了。
很简单,在你的onmouseout中重新定义了定时器。把定时器var timer改成 timer即可
应该是js这个脚本的引用出现问题
贴一下全部的代码
这么说吧,不加括号,等号后面代表的是这个函数体,而加了括号,代表的就是函数执行的结果了。
在设置定时器之前,要先清除准备执行的定时器