2011-02-03 40 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

相關問題