javascript addEventListener by querySelector не работает - PullRequest
4 голосов
/ 03 февраля 2011

Привет, это мой код 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.

кто-нибудь мне поможет?

1 Ответ

0 голосов
/ 16 мая 2014

Код, который вы дали, должен работать как есть. 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...