达拉~ 2022-04-18 22:32 采纳率: 64.7%
浏览 48
已结题

如何理解onmouseover鼠标移入事件和onmouseout鼠标移出事件

本来是要写一个轮播图的,需求有一点是鼠标移入轮播图停止,移出轮播图再执行,但是现在他这个移出的事件会在网页第一次打开的时候和下面的setInterval交叉执行,要达到需求需要刷新一次网页就正常了、且只需刷新一次,但是他如果重新打开这个网页就又会出现这个问题

这个轮播图写了几次都是欧克的,但是这个练习出现这个问题,我想要知道他这个移出的判定是发生在移入之后的吗,毕竟我网页刚打开他就是移出的状态,我觉得是这个影响了。因为我把它那个移出事件注掉后就正常了,但是他又不能实现移出后继续执行。

    <script>
        // 获取图片

        var item = document.querySelector('#item')
        var imgRun = document.querySelector('#item').getElementsByClassName('items')
        var dots = document.querySelector('#dot').getElementsByClassName('dots')
        var i = 0
        var left = document.querySelector('#left')
        var right = document.querySelector('#right')
        console.log(imgRun)
        // 事件:鼠标移入事件
        item.onmouseover = function () {
            clearInterval(td)
            left.style.display = 'block'
            right.style.display = 'block'
        }
        // 鼠标移出事件
        item.onmouseout = function () {
            td = setInterval(laal, 1000)
            left.style.display = 'none'
            right.style.display = 'none'
        }
        // 左右按钮点击事件
        left.onclick = function () {
            laal('left')
        }
        right.onclick = function () {
            laal('right')
        }
        // 小圆点切换
        for (p = 0; p < dots.length; p++) {
            dots[p].setAttribute('index', p)
            dots[p].style.cursor = 'pointer'
            dots[p].onclick = function () {
                for (p1 = 0; p1 < dots.length; p1++) {
                    dots[p1].style.backgroundColor = 'rgba(225, 216, 216, 0.7)'
                    imgRun[p1].style.zIndex = 0
                }
                this.style.backgroundColor = '#fff'
                imgRun[this.getAttribute('index')].style.zIndex = 1
            }
        }
        function laal(type) {

            if (type === 'left') {
                i--
                if (i < 0) {
                    i = imgRun.length - 1
                }
            } else {
                i++
                if (i >= imgRun.length) {
                    i = 0
                }
            }

            for (var a = 0; a < imgRun.length; a++) {
                imgRun[a].style.zIndex = 0;
                dots[a].style.backgroundColor = 'rgba(225, 216, 216, 0.7)';
            }

            imgRun[i].style.zIndex = 1
            dots[i].style.backgroundColor = '#fff'
        }
        var td = setInterval(laal, 1000)

    </script>
 <ul id="item">
                <li class="items" style="z-index: 1;"><img src="./轮播图.jpg" height="660px" width="1800px" alt=""  class="carousel-img "></li>
                <li class="items"><img src="./轮播图/02.jpg" height="660px" width="1800px" alt="" class="carousel-img ">
                </li>
                <li class="items"><img src="./轮播图/03.jpg" height="660px" width="1800px" alt="" class="carousel-img ">
                </li>
                <li class="items"><img src="./轮播图/04.jpg" height="660px" width="1800px" alt="" class="carousel-img ">
                </li>
                <!-- 左右按钮 -->
                <div id="left" style="display: none;"><img src="./轮播图/向左_o.png" width="30px" alt=""></div>
                <div id="right" style="display: none;"><img src="./轮播图/向右箭头.png" width="26px" alt=""></div>
                <!-- 小原点 -->
                <ul id="dot">
                    <li class="dots" style="background-color:#fff"></li>
                    <li class="dots"></li>
                    <li class="dots"></li>
                    <li class="dots"></li>
                </ul>
            </ul>
                    

  • 写回答

1条回答 默认 最新

  • 小草的味道 2022-04-19 11:43
    关注

    清除定时器并td 赋值为 null,鼠标移出时判断,判断是否td是否为null ,为null 添加,否则先清除原定时器 ,在添加新的定时器

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月20日
  • 修改了问题 4月18日
  • 修改了问题 4月18日
  • 修改了问题 4月18日
  • 展开全部

悬赏问题

  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页脚具体代码该怎么写?
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯