Javascript 在本地工作,但不在 Github Pages 网站上工作

标签 javascript html css animation web

我最近为我的网站编写了一些动画,它在本地运行得很好,但是当我推送它并尝试访问该页面(由 GithubPages 托管)时,它向我抛出错误。 未捕获类型错误:无法读取 null(...) 的属性“addEventListener”
我去做了一些研究,发现了这个页面:https://teamtreehouse.com/community/error-uncaught-typeerror-cannot-read-property-addeventlistener-of-null
还有这个:
Cannot read property 'addEventListener' of null
我尝试应用这些解决方案,但仍然不起作用。有的解决方案说可能是因为该元素不存在。好吧,由于该元素是 body 元素,因此它 100% 存在并且肯定已定义。
我真的希望我没有犯一些愚蠢的错误!那就尴尬了。
JS附在下面,错误发生在 document.body.addEventListener("mousemove", function(ev) {

var possibleImages = [
  "assets/images/Moana.jpg",
  "assets/images/GuitarPlaying.png",
  "assets/images/Cheese.jpg",
  "assets/images/CryptoPhoto.jpg",
  "assets/images/LogoSmall.png",
  "assets/images/Group5.jpg"
  ];

document.body.addEventListener("mousemove", function(ev) {
    if (Math.random() < 0.85) {
        return;
    }

    const index = Math.round(Math.random() * possibleImages.length);
    const image = possibleImages[index];

    const el = document.createElement("img");
    document.body.appendChild(el);

    el.classList.add('emoji');
    el.src = image
    el.offsetLeft;  // forces layout

    el.style.left = (event.clientX-410) + 'px';
    el.style.top = (event.clientY-50) + 'px';
    el.style.transform = 'translate(' + (Math.random() * -1000 + 500) + 'px, 1200px) scale(0)';


    el.addEventListener('transitionend', () => {
        el.remove()
})

}, true);

最佳答案

问题是您试图在 document.body 完全加载之前读取它。您可以使用 jQuery 简单地修复它:

js:

$( document ).ready(function() {
var possibleImages = [
  "assets/images/Moana.jpg",
  "assets/images/GuitarPlaying.png",
  "assets/images/Cheese.jpg",
  "assets/images/CryptoPhoto.jpg",
  "assets/images/LogoSmall.png",
  "assets/images/Group5.jpg"
  ];

document.body.addEventListener("mousemove", function(ev) {
    if (Math.random() < 0.85) {
        return;
    }

    const index = Math.round(Math.random() * possibleImages.length);
    const image = possibleImages[index];

    const el = document.createElement("img");
    document.body.appendChild(el);

    el.classList.add('emoji');
    el.src = image
    el.offsetLeft;  // forces layout

    el.style.left = (event.clientX-410) + 'px';
    el.style.top = (event.clientY-50) + 'px';
    el.style.transform = 'translate(' + (Math.random() * -1000 + 500) + 'px, 1200px) scale(0)';


    el.addEventListener('transitionend', () => {
        el.remove()
})

}, true);
 }

html:

  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>

您也可以在没有 jQuery 的情况下完成此操作,包括下面写入的所有代码:

document.addEventListener("DOMContentLoaded", function(event) { 
  //here your code
});

关于Javascript 在本地工作,但不在 Github Pages 网站上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48516736/

相关文章:

javascript - 脚本图像不会用文本换行

html - 关于标题 1 的 CSS3 样式

javascript - 单击按钮时如何删除表格中的一行?使用Javascript

javascript - 带有字符串键的映射,其中值是 Javascript 中的长整对数组?

javascript - 无法在同一 HTML 中使用多个模板/ Controller

html - 将鼠标悬停在父元素上以显示覆盖的子元素

javascript - 盖乐世 Note 2 屏幕尺寸

javascript - 选择第二个框时触发事件,Angular

javascript - 在node.js中将pdf转换为图像的azure函数?

html - BootStrap 模态显示不正确