querySelector 的 javascript addEventListener 不起作用

标签 javascript debugging addeventlistener selectors-api

嗨,这是我的 javascript 代码:

window.onload = function () {

    function hideAds() {
        setTimeout(hide, 2000);
    }

    function hide() {
        var ads = document.querySelector(".ads");
        ads.style.marginTop = (-ads.offsetHeight) + "px";
    }

    function reveal() {
        ads.style.marginTop = "";
        hideAds();
    }
    var ads = document.querySelector(".ads");
    ads.addEventListener("click", reveal, true);


    hideAds();

}

从这段代码中,除倒数第二行“ads.addEventListener”外,一切正常。是什么原因?我在这里做错了什么吗?

我需要通过点击广告类添加的 div 来调用我的展示功能。

有人帮帮我吗?

最佳答案

您提供的代码应该可以正常工作。 jsFiddle

但我很想像这样重构您的代码。

HTML

<div class="ads">Blah blah blah</div>

Javascript

function setMarginTop(element, marginTop) {
    element.style.marginTop = marginTop || null;
}

function hideAds(element, marginTop, ms) {
    setTimeout(function() {
        setMarginTop(element, marginTop);
    }, ms || 2000);
}

window.addEventListener('load', function () {
    var ads = document.querySelector('.ads'),
        hide = (-ads.offsetHeight) + 'px';

    hideAds(ads, hide);
    ads.addEventListener('click', function (evt) {
        var target = evt.target;

        setMarginTop(target)
        hideAds(target, hide);
    }, false);
}, false);

关于 jsFiddle

关于querySelector 的 javascript addEventListener 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4889303/

相关文章:

javascript - 在鼠标滚轮上平滑滚动?

java - 在 IntelliJ 中调试时是否可以观察 BufferedImage 对象?

javascript - 如何在 target 和 currentTarget 之间切换元素的类?

c++ - 启用 dll 的 gflags 完整堆不起作用

linux - pstack 作为分析工具的可靠性如何?

javascript - 复制一个 'change' EventListener函数

javascript - 在 fullcalendar 中使用资源 - 测试

javascript - Chrome 何时清除磁盘缓存?

javascript - Redux Saga select 不是一个函数

javascript - 未捕获的 FirebaseError : Messaging: This method is available in a Window context