发表于: 2020-04-19 22:43:30
0 1491
一、今天完成的事情
一、今天完成的事情
利用定时器切换图片的练习
<script>
window.onload = function () {
/*
* 使图片可以自动切换
* */
//获取img标签
var img1 = document.getElementById("img1");
//创建一个数组来保存图片的路径
var src = ["1.jpg","2.jpg","3.jpg"];
//创建一个变量,用来保存当前图片的索引
var index = 0;
//定义一个变量,用来保存定时器的标识
var timer;
//获取按钮
var btn01 = document.getElementById("btn01");
var btn02 = document.getElementById("btn02");
btn01.onclick = function(){
/*
* 目前,我们每点击一次按钮,就会开启一个定时器
* 点击多次就会开启多个定时器,这就导致图片的切换速度过快
* 并且我们只能关闭最后一次开启的定时器
* */
//在开启定时器之前,需要将当前元素上的其他定时器关闭
clearInterval(timer);
timer = setInterval(function () {
//使索引自增
index++;
if (index>src.length-1){
index = 0;
}//判断索引的值是否超过图片的数量,如果超过就使index = 0
//还有一种写法,判断index
// index = index%src.length;//当index的大小自增到和数组的长度一样时,那么index取余重新变为0
//修改img1的src属性
img1.src = src[index];
},1000);
};
btn02.onclick = function () {
clearInterval(timer);
//清除定时器,它可以接收任何的参数
//如果参数是一个有效的定时器的标识,则停止对应的定时器
//如果参数不是一个有效的标识,则什么也不做
}
}
</script>
</head>
<body>
<button id="btn01">点我啊</button>
<button id="btn02">停止吧</button>
<img id="img1" src="1.jpg" style="width: 300px;height: 300px"/>
</body>
</html>
延时调用
<script>
var num = 1;
//开启一个定时器
// setInterval(function () {
// console.log(num++);
// },1000);
/*
* 延时调用
* - 一个函树不马上执行,而是隔一段时间以后执行,而且只会执行一次
*
* 延时调用和定时调用的区别,定时调用会执行多次,而延时调用只会执行一次
*
* 延时调用和定时调用实际上是可以互相代替的,在开发中可以根据自己需要去选择
* */
setTimeout(function () {
console.log(num++);
},1000);
clearTimeout(1);//关闭一个延时调用
</script>
</head>
定时器的应用
<style>
*{
padding: 0;
margin: 0;
}
#box1{
width: 100px;
height: 100px;
background-color: yellowgreen;
position: absolute;
}
</style>
<script>
window.onload = function () {
/*
* 点击按钮之后box1向右走
* */
//获取box1
var box1 = document.getElementById("box1");
//获取btn01
var btn01 = document.getElementById("btn01");
//点击按钮之后,使box1向右移动
btn01.onclick = function () {
// box1.style.left = "100px";
//开启一个定时器,来执行动画效果
setInterval(function () {
//获取box1 原来的left值
var oldValue = box1.offsetLeft;
alert(oldValue);
},30);
}
}
</script>
</head>
<body>
<button id="btn01">点我</button>
<br><br>
<div id="box1"></div>
</body>
轮播图
<style>
*{
padding: 0;
margin: 0;
}
img{
width: 300px;
height: 200px;
}
#outer{
/*设置宽和高*/
width: 320px;
height: 200px;
/*居中*/
margin: 0 auto;
/*设置背景颜色*/
background-color: yellowgreen;
/*设置padding*/
padding: 10px 0;
/*开启相对定位*/
position: relative;
/*裁剪溢出的内容*/
overflow: hidden;
}
/*设置imgList*/
#imgList{
/*去除项目符号*/
list-style: none;
/*设置ul的宽度*/
/*width: 1000px;*/
/*开启绝对定位,父元素要开启相对定位*/
position: absolute;
/*设置偏移量*/
/*
*每向左移动320px,就会显示到下一张图片
*/
left: 0;
}
#imgList li{
/*设置浮动*/
float: left;
/*设置左右外边距*/
margin: 0 10px;
}
/*设置导航按钮*/
#navDiv{
/*开启绝对定位*/
position: absolute;
bottom: 15px;
/*设置left的值*/
/*left: 130px;*/
}
#navDiv a{
/*设置超链接浮动*/
float: left;
width: 15px;
/*设置超链接的宽和高*/
height: 15px;
/*设置背景颜色*/
background-color: aquamarine;
/*左右外边距*/
margin: 0 5px;
/*设置半透明*/
opacity: 0.6;
/*兼容IE8的透明*/
filter:alpha(opacity=50);
}
/*设置鼠标移入的效果*/
#navDiv a:hover{
background-color: black;
}
</style>
<!--引入工具-->
<script>
window.onload = function () {
//设置imgList宽度
//获取imgList
var imgList = document.getElementById("imgList");
//获取页面中所有的img标签
var imgArr = document.getElementsByTagName("img");
//设置imgList的宽度
imgList.style.width = 320 * imgArr.length + "px";
//设置导航按钮居中
//获取navDiv
var navDiv = document.getElementById("navDiv");
//获取outer
var outer = document.getElementById("outer");
//设置navDiv
navDiv.style.left = (outer.offsetWidth - navDiv.offsetWidth)/2 + "px";
//默认显示图片的索引
var index = 0;
//获取所有的a
var allA = document.getElementsByTagName("a");
//设置默认选中的效果
allA[index].style.backgroundColor = "black";
/*
* 点击超链接,切换到指定的图片
* 点击第一个超链接,显示第一张图片
* 以此类推
* */
//为所有的超链接绑定单击响应函数
for (var i = 0 ;i <allA.length;i++){
//为每一个超链接添加一个num属性
allA[i].num = i;
allA[i].onclick = function () {
//关闭自动切换定时器
// clearInterval(timer);
//获取点击超链接的索引,并将其设置为index
index = this.num;
//切换图片
/*
* 第一张 0 lest 0
* 第二张 1 left -320px
* 第三张 2 left -640px
* */
imgList.style.left = -320*index + "px";
//设置修改正在选中的a
setA();
//使用move函数来切换图片
}
}
//自动切换图片
autoChange();
//创建一个方法用来设置选中的a
function setA() {
//判断当前索引是否是最后一张图片
if (index>=imgArr.length-1) {
//则将index设置为0
index=0;
//此时显示的最后一张图片,而最后一张图片和第一张图片是一模一样
//通过css将最后一张切换成第一张
}
//遍历所有的a,并将他们的背景颜色设置为红色
for (var i = 0 ;i <allA.length;i++){
allA[i].style.backgroundColor = "";
}
//将选中的a设置为黑色
allA[index].style.backgroundColor = "black";
}
// var timer;
//创建一个函数,用来开启自动切换图片
function autoChange() {
//开启一个定时器,用来自动切换图片
/*timer =*/ setInterval(function () {
//使索引自增
index++;
if (index>=imgArr.length){
index %= imgArr.length;
}
//执行动画,切换图片
imgList.style.left = -320*index + "px";
},2000);
}
}
</script>
</head>
<body>
<!--创建一个外部的div,来作为一个大的容器-->
<div id="outer">
<!--创建一个ul,用来放置图片-->
<ul id="imgList">
<li><img src="1.jpg"> </li>
<li><img src="2.jpg"></li>
<li><img src="3.jpg"></li>
</ul>
<!--创建导航按钮-->
<div id="navDiv">
<a href="javascript:;"></a>
<a href="javascript:;"></a>
<a href="javascript:;"></a>
</div>
</div>
</body>
二、遇到的困难
暂时没有
三、明天要做的事情
学习
四、收获
学习了轮播图的制作,多加练习
评论