2011-02-03 9 views
4

に動作しない:querySelectorしてJavaScriptのaddEventListenerこれは私のjavascriptのコードであるHI

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

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); 

それは私のために正常に動作します。おそらく.adsが隠されている可能性があるので、親にリスナーを追加したいと思うかもしれません。 – jasssonpet

+0

@patrick Yea、Patrick。コードがどのようにきれいにフォーマットされているのか見ていないのですか?あなたは何について話していますか? ':)' –

+0

patrick dwと言うのは正しいです。緊急には、私はコードをフォーマットすることができません。ごめんなさい。 – 3gwebtrain

答えて

0

あなたが指定したコードは、そのまま動作するはずです。 jsFiddle

しかし、私はあなたのコードを再構築するように誘惑されるでしょう。 jsFiddle

関連する問題