2016-03-31 11 views
0

私は、方法の好みになると信じている質問があります。次のコードで簡略化されたアクティブステート

のdiv親要素がクリックされたときに、div要素自体が膨張しても、私はそれだけでクラスを追加したり変更したかを簡単に考えていたアイコンがアニメーション

var slideSection6 = document.getElementById("manualsHandbooks").addEventListener("click", function() 
                       { 
    if (this.parentElement.style.height == "60px" || this.parentElement.style.height == "") 
    { 
     this.parentElement.style.height = "215px"; 
     document.getElementById("MAHB").classList.add("active"); 
    } 
    else 
    { 
     this.parentElement.style.height = "60px"; 
     document.getElementById("MAHB").classList.remove("active"); 
    } 

}, false); 

をトリガーアイコンの状態を試して、別のクリックイベントをアイコンに追加してクリックしてアニメーション化し、divの親要素をアクティブにしたいと考えました。基本的には上記の逆です。

私はそれが

|| document.getElementId("MAHB").classList.add=("active") == true 

の効果にif文に別の条件を追加するのと同じくらい簡単だろうと思った。しかし、これは動作しませんし、私はそれが正しい形式ではありません知っています。誰かが私を始めて私がこれを理解することができるだろうか?

+0

無関係が、IMO要素の高さで、ビジネス・ロジックを埋め込むことはやって本当に大雑把な方法でありますこの。最悪の場合はクラスベースで、DOMから完全に取り除く方がよいでしょう。 –

+0

'|| document.getElementId( "MAHB")。classList.indexOf( "active")> -1'はあなたが探しているものですか? –

+0

いいえ、2回目のクリックでスクリプトが実行されないためです –

答えて

0

Element.classListは、少し簡単にすることができるtoggleメソッドを持っています。特定のクラスが存在するかどうかを確認する場合は、classList.containsを使用することもできます。

あなたの要素のheightを使用して現在の状態を判断しないことをお勧めします。あなたはactive cssクラスを使って高さを変えてみませんか?

あなたのクリックハンドラは、その後、次のようになります。

var button = document.getElementById("manualsHandbooks"); 

button.addEventListener("click", function() { 
    this.parentElement.classList.toggle("active"); 
    document.getElementById("MAHB").classList.toggle("active"); 
}, false); 

あなたがここにclassList詳細を読むことができます:https://developer.mozilla.org/en-US/docs/Web/API/Element/classList

+0

ありがとうございます! JSの新機能それを愛していますが、とてもイライラする可能性があります –

+0

お聞きしておきましょう:あなたのブラウザの開発者ツールを使って、何が起こっているのかを感じてください。コンソールで試してみることで多くを学ぶことができます。 – user3297291