2011-02-03 68 views
4

你好,这是我的javascript代码:通过querySelector的JavaScript的addEventListener不行

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来调用我的揭示功能。

任何一个帮助我吗?

+0

它工作正常的我。也许你想将监听器添加到父代,因为.ads可能是隐藏的。 – jasssonpet 2011-02-03 17:20:37

回答

0

您提供的代码应该按原样运行。 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

相关问题