2016-11-05 5 views
1

私はjavascript/jqueryの新機能であり、まだ理解していません。私は、コードhttp://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_js_dropdownJqueryドロップダウンメニューの説明

私は私がこの

window.onclick = function(event) { 
    if (!event.target.matches('.dropbtn')) { 

    var dropdowns = document.getElementsByClassName("dropdown-content"); 
    var i; 
    for (i = 0; i < dropdowns.length; i++) { 
     var openDropdown = dropdowns[i]; 
     if (openDropdown.classList.contains('show')) { 
     openDropdown.classList.remove('show'); 
     } 
    } 
    } 
} 
へのほとんどすべてを理解して意味のある部分を理解して見えることはできません、しかし、私はjqueryのを使用して、ドロップダウンメニューを習得しようとしていると私はこのw3schoolチュートリアルを見つけました

私はforループがどのように動作するのか知っていますが、htmlファイルからdivsになると、どのように動作するのか分かりません。iたとえば、var dropdownsには、dropdown-contentというクラスのdivがあります。次に、このvarは、長さのプロパティを持つforループで使用されますが、私はそのvar ..の長さは何か分からない1ですか?そして、var openDropdown = dropdowns[i]の行はこれですか? var i0ですが、varのドロップダウンからはどのようなものがありますか?

答えて

2
var dropdowns = document.getElementsByClassName("dropdown-content"); 

これはまた、iの値が0に初期化されると、あなたがインデックスを使用して繰り返すことができ、オブジェクト(もの0,1 ... ...返さマッチした要素の数に応じて)

を返します。 ... dropdown [i]を使用するとドロップダウン[0]に変わります。同じことを何度も繰り返すのではなく、より多くのマッチがある場合も同じです。

:D

+0

したがって、forループでは、dropdowns.lengthは何ですか? 1?ドロップダウン[i]は何を返しますか?それは 'dropdown-content' divですか?さらになぜforループがここで使われているのですが、IF関数だけではないのですか? –

+1

はい、 'dropdown.length'は、文' document.getElementsByClassName( "dropdown-content"); '(これは値1と、あなたが推測したように 'dropdown-content' divを持ちます)とループの理由は、例のような複数のドロップダウンメニューを持つ可能性があるため、一般的な例と 'if'を使用した単一要素テストのyesが十分である可能性があります。 – RohitS