图片切换加定时器(图片轮播)

之前写过一个图片切换的实例,当时只是没有加定时器,今天加上定时器,让其自动播放,好的来看代码:

css代码:

<style>
    ul { padding:0; margin:0; }
    li { list-style:none; }
    .box { width:400px; height:500px; position:relative;
        float: left;margin-right:60px; background:url(img/loader_ico.gif) no-repeat center #fff; }
    .box img { width:400px; height:500px; }
    .box ul { width:40px; position:absolute; top:0; right:-50px; }
    .box li { width:40px; height:40px; margin-bottom:4px; background:#666; }
    .box .active { background:#FC3; }
    .box span { top:0; }
    .box p { bottom:0; margin:0; }
    .box p,.box span { position:absolute; left:0; width:400px; height:30px; line-height:30px; text-align:center; color:#fff; background:#000; }
</style>

html代码:

 <div class="box" id="pic1">
        <img src="" />
        <span>数量正在加载中……</span>
        <p>文字说明正在加载中……</p>
        <ul></ul>
  </div>

接下来就是js代码:

window.onload = function() {
            var oDiv = document.getElementById("pic1");
            var oImg = oDiv.getElementsByTagName("img")[0];
            var oUl = oDiv.getElementsByTagName("ul")[0];
            var aLi = oUl.getElementsByTagName("li");
            var oSpan = oDiv.getElementsByTagName("span")[0];
            var oPtxt = oDiv.getElementsByTagName("p")[0];
            var arrUrl = ["img/pic1.jpg", "img/pic2.jpg", "img/pic3.jpg", "img/pic4.jpg"];
            var arrPtxt = ["图1", "图2", "图3", "图4"];
            var num = 0;
            //在ul里追加li,li的数量等于数组的长度
            for (var i = 0; i < arrUrl.length; i++) {
                oUl.innerHTML += "<li></li>";
            }

            //加定时器
            var timer=null;
            function autoplay(){
                timer = setInterval(function(){
                    num++;
                    num%=arrUrl.length;
                    fn();
                },1000);
            }autoplay();

            oDiv.οnmοuseοver=function(){
                clearInterval(timer);
            };
            oDiv.οnmοuseοut= autoplay;//注意:事件调用不能加括号,函数名称加括号就等于函数返回的值,若你函数没有返回值那么就是undefined

        //初始化
            function fn() {
                oImg.src = arrUrl[num];
                oPtxt.innerHTML = arrPtxt[num];
                oSpan.innerHTML = 1 + num + "/" + arrUrl.length;
                for (var i = 0; i < aLi.length; i++) {
                    aLi[i].className = "";
                }
                aLi[num].className = "active"
            }
            fn();

            for (var i = 0; i < aLi.length; i++) {//循环li
                aLi[i].index = i;//索引值,当前li等于i
                aLi[i].onclick = function () {
                    num = this.index;
                    fn();
                }

            }

    }

注意:加定时器这一部分代码标粗了,为了看的更加清楚,特别要注意的小细节就是我注释里的内容:事件调用不能加括号,函数名称加括号就等于函数返回的值,若你函数没有返回值那么就是undefined,所以这里一定要注意这个细节。

好了,今天就这样了,欢迎指出问题!

转载于:https://www.cnblogs.com/web001/p/8059332.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是一个简单的 Vue 轮播效果定时器的实现步骤: 1. 安装 Vue.js,引入 Vue.js 库文件。 2. 在 Vue 实例中定义数据,包括轮播图片数组和当前显示图片的索引。 3. 使用 v-for 指令循环渲染轮播图片,并使用 v-bind 绑定图片的 src 属性。 4. 添定时器,使用 setInterval() 函数实现轮播效果,每隔一段时间切换到下一张图片。 5. 实现图片切换效果,使用 v-bind:class 绑定轮播图片的样式,根据当前显示图片的索引来判断哪张图片应该被显示。 下面是一个简单的 Vue 轮播效果定时器的代码示例: ``` <template> <div class="slider"> <img v-for="(image, index) in images" v-bind:src="image.src" v-bind:class="{ active: currentIndex === index }"> </div> </template> <script> export default { data() { return { images: [ { src: 'image1.jpg' }, { src: 'image2.jpg' }, { src: 'image3.jpg' }, { src: 'image4.jpg' }, { src: 'image5.jpg' } ], currentIndex: 0 } }, mounted() { setInterval(() => { this.currentIndex = (this.currentIndex + 1) % this.images.length; }, 3000); } } </script> <style> .active { display: block; } .slider img { display: none; } </style> ``` 在上面的代码中,我们使用了一个数组 images 来存储轮播图片的信息,包括图片的地址 src。使用 v-for 指令循环渲染轮播图片,并使用 v-bind 绑定图片的 src 属性。 为了实现轮播效果,我们使用了 setInterval() 函数,每隔 3 秒钟切换到下一张图片,并更新当前显示图片的索引 currentIndex。 在模板中,我们使用 v-bind:class 绑定轮播图片的样式,根据当前显示图片的索引来判断哪张图片应该被显示。在样式中,我们使用了 .active 类来控制当前显示图片的样式,使用 display 属性来切换图片的显示状态。 希望这个示例可以帮助你实现 Vue 轮播效果定时器。 ### 回答2: Vue是一种流行的前端框架,广泛应用于构建交互式的Web应用程序。轮播效果是Vue中常见的功能之一,可以通过使用定时器来实现轮播功能。 首先,我们需要在Vue组件中定义一个定时器相关的数据变量。例如,我们可以在data属性中定义一个名为interval的变量来表示定时器的间隔时间,以及一个名为timer的变量来存储定时器对象。 接下来,我们可以在Vue组件的生命周期钩子函数中,比如mounted函数中,使用JavaScript的setInterval函数来创建定时器。在定时器中,我们可以定义一个函数来实现轮播的逻辑,例如切换图片、更新状态等操作。 在每次定时器触发时,我们可以调用轮播函数,并通过Vue的响应式机制来更新数据。例如,我们可以定义一个名为index的变量来表示当前轮播的索引,每次定时器触发时,我们可以将index1,然后更新轮播状态。 同时,我们还需要考虑在轮播到最后一张图片时,重新回到第一张图片的需求。可以通过判断当前的index是否超出了最大索引值,如果超出了,则将index重置为0。 最后,我们需要在Vue组件的模板中使用计算属性或者绑定数据来展示轮播效果。我们可以在模板中通过绑定轮播状态的变量来实现动态展示不同的图片。 综上所述,使用定时器来实现Vue轮播效果的步骤如下: 1. 在Vue组件的data属性中定义定时器相关的数据变量,如interval和timer。 2. 在Vue组件的mounted钩子函数中使用setInterval函数创建定时器,并在定时器中实现轮播逻辑。 3. 在每次定时器触发时,使用Vue的响应式机制来更新数据,实现轮播状态的更新。 4. 在模板中使用计算属性或者绑定数据来展示轮播效果。 5. 考虑在轮播到最后一张图片时重新回到第一张图片的需求,需要对index进行重置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值