debugging JavaScript addEventcodeby querycodenot work [已关闭]

iyfamqjs  于 12个月前  发布在  Java
关注(0)|答案(2)|浏览(164)

**已关闭。**此问题需要debugging details。目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
21天前关闭
Improve this question
这是我的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();

}

字符串
从这段代码,一切工作正常,然后“广告。addEvents.com”从最后第二行。是什么原因?我做错了什么在这里..?
我需要通过点击广告类添加div来调用我的reveal函数。
有谁能帮帮我吗?

neekobn8

neekobn81#

你给出的代码应该可以正常工作。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

hwamh0ep

hwamh0ep2#

这一个是没有延迟2000毫秒之前的广告实际出现:

window.onload = function () {
    var ads = document.querySelector(".ads");

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

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

    function reveal() {
        ads.style.marginTop = "";
        hideAds();
    }

    ads.addEventListener("click", reveal, true);

    hideAds();
}

字符串

相关问题