2016-08-23 12 views
2

divを切り替えるボタンにイベントリスナーを持つ単純なHTML-CSS-JavaScriptページがあります。Javascriptのクリックイベントはダブルクリックが必要

しかし、すべて機能していますが、アニメーション機能は最初に2回クリックするだけですが、ボタンが最初のクリックを聴いたことを証明するためにclickイベントを頼んだのです。

私はwindow.onloadでも同じことにラップしようとしました。

注:私は純粋なjavascriptのみを使用したいと思います。 (アニメーションが行われた)

After First Click

この写真は、もう一度クリックを示しています: は、この写真は、最初のクリック(それはコンソールで "クリック" という)を示して

ありがとう

After Second Clickここで

は私のコードです:

  var showDivButton = document.getElementById('showDivButton'); 
      var info = document.getElementById('info'); 

      showDivButton.addEventListener('click', animation) ; 

      // animation func 
      function animation() { 
       console.log('Clicked!'); 
       if (info.style.display === 'none'){ 
        info.style.display = 'inline-block'; 
        showDivButton.style.background = 'green'; 
       } else { 
        info.style.display = 'none'; 
        showDivButton.style.background = 'gray'; 
       } 

      } 

見てくださいMy Plunker Hereをご覧ください。前もって感謝します。

答えて

3

は、次のようにあなたの機能ブロックを修正してください:上のようinfo.style.displayは、あなたのdivのスタイル属性、ない計算されたスタイルを指しているので

function animation() { 
    console.log('Clicked!'); 
    if (info.style.display == '' || info.style.display == 'none'){ 
     info.style.display = 'inline-block'; 
     showDivButton.style.background = 'green'; 
    } else { 
     info.style.display = 'none'; 
     showDivButton.style.background = 'gray'; 
    } 

} 

info.style.displayは初期

+0

jsが制御を開始する前でも、スタイルがコンテンツとともに読み込まれると、info.style.displayが初期状態になるのはなぜですか? –

+0

と空文字列の意味はどうですか? info.style.display == ' –

+0

@shireefkhatabこれは、divの表示がblock(または多分継承)のデフォルトスタイルを含んでいるため、ページがロードされている間にこれらの値が定義されていないか、単に空の文字列になるまでですあなたはそれに値を割り当てます。これはvar aのようなものです。 console.log(a); 'a'はあなたがそれに1つを割り当てるまでは値を含んでいません –

1

''です最初のクリック、これは設定されていません。

getComputedStyleを見たいかもしれませんが、スタイルを直接変更する代わりにクラスを切り替えることをお勧めします。

関連する問題