javascript - 带有 id 的 div 不接受任何事件处理程序 JavaScript。没有Jquery

标签 javascript html css event-handling slideshow

我试图在您将鼠标悬停在 div 上时暂停定时幻灯片

    <div id="play_slide" onMouseOver="clearTimeout(playTime)"></div>

如果我将 onMouseOver="clearTimeout(playTime)" 放在页面上的 li 中,它会暂停,所以我知道我的代码是正确的,它不会在 div 上工作!此外,如果我去掉 id,当我将警报函数放入事件处理程序时它会发出警报

这是js。

    var playTime;

    function playSlide()
    {
      var slideshow = document.getElementById("play_slide").style;
      var images = new Array("an", "complete", "red", "thirteen");
      indexPlay++;
      if(indexPlay > images.length - 1)
      {
          indexPlay = 0;
      }
      slideshow.backgroundImage = "url('assets/images/play/"+images[indexPlay]+".png')";

      playTime = setTimeout("playSlide()", 2500);
    }

你可以在这里看到这个:www.nicktaylordesigns.com/work.html

最佳答案

我会这样做:

(并且没有内联脚本...只是 <div id="play_slide">Something</div> )

var playTime;
var indexPlay = 0;
var slideElement;
window.onload = function () {
    slideElement = document.getElementById("play_slide");
    slideElement.addEventListener('mouseenter', function () {
        console.log('stop');
        clearTimeout(playTime);
    });
    slideElement.addEventListener('mouseleave', function () {
        console.log('continue');
        playTime = setTimeout(playSlide, 2500);
    });
    playSlide();
}

function playSlide() {
    var slideshow = slideElement.style;
    var images = new Array("an", "complete", "red", "thirteen");
    indexPlay++;
    if (indexPlay > images.length - 1) {
        indexPlay = 0;
    }
    slideshow.backgroundImage = "url('assets/images/play/" + images[indexPlay] + ".png')";
    playTime = setTimeout(playSlide, 2500);
}

Fiddle

关于javascript - 带有 id 的 div 不接受任何事件处理程序 JavaScript。没有Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20438853/

相关文章:

css - 移动标题中的中心 Logo

css - 最高效的 CSS 选择器 : Header Tag, 类还是 ID?

javascript - 我如何访问另一个 mobx 商店中的 mobx 商店?

javascript - 找不到类 'NunoMaduro\Collision\Adapters\Laravel\CollisionServiceProvider'

javascript - 通过代码在 ExtJS 中填写表单并触发每个组件的事件的好方法是什么,就好像它们是由用户填写的一样?

html - 扩大视野后,网站看起来更糟。不确定为什么更改最大宽度可以解决问题

javascript - 我可以使用 vue js 显示 <p> 标签,但 2 秒后无法删除它

css - 自定义 Css 在 Wordpress 中的实时站点上不起作用

javascript - 单击每个元素显示内容

jquery - 如何使用 jquery 输入类型文件过滤器分离事件