2016-11-05 49 views
1

我很新的JavaScript/jQuery,並不完全理解它呢。我想學習使用jQuery下拉菜單,我發現這個w3school教程,不過,我似乎無法理解的代碼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'); 
     } 
    } 
    } 
} 
的某些部分

我知道什麼是for循環,它是如何工作的,但我不明白i如何處理HTML文件中的div。例如var dropdowns有一個dropdown-content類的div。然後,這個變量用於具有length屬性的for循環中,但我不明白這個變量的長度是多少。它是1嗎?然後用var openDropdown = dropdowns[i]這行呢? var i0但是它是從var下拉菜單中獲取的?

回答

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

這將返回一個對象,可以爲I的值與0初始化索引(即0,1 ...取決於返回的匹配元素...的數量)

也迭代...使用下拉[我]將完全變成下拉[0]也如果你有更多的匹配,它會做的工作,而不是再次寫同樣的事情..

希望這可以幫助... :D

+0

所以在for循環中,dropdowns.length是什麼? 1?下拉[i]返回什麼?它是'dropdown-content'div嗎?此外爲什麼在這裏使用循環,爲什麼不只是IF函數? –

+1

yes,'dropdown.length'通過語句'document.getElementsByClassName(「dropdown-content」)檢索到的對象數組的返回長度;'(這裏是的,它的值爲1,其'下拉內容'div爲你猜對)和循環的原因可能是你可能有多個下拉菜單,而不僅僅是一個例子,所以這是一個廣義的例子,是單個元素測試'是'就足夠了。 – RohitS