2012-04-18 62 views
0

此代碼尚未完全完成。我試圖遍歷頁面內的所有'm'變量,直到頁面內沒有更多'm'變量。現在我有'for(m in document)',我知道這是錯誤的。任何人都可以指出我的正確方向嗎?對於文檔中的變量(Javascript)

var m = document.getElementsByClassName('project') 
    var n = document.getElementsByClassName('web') 
    var o = document.getElementsByClassName('print') 
    var p = document.getElementsByClassName('illustration') 

function projectFilter(type){ 
    if (type === 'print'){ 
     for (m in document){ 
     if (getElementsByClassName('print') != null){ 
      m.style(opacity=0.3) 
      console.log("Whatshappening") 
     } 
    } 
    if (type === 'web'){ 
     console.log('webbyshit') 
    } 
    if (type === 'illustration'){ 
     console.log('illustrating') 
    } 
    if (type === 'project'){ 
     console.log('EVERYTHING') 
    } 
} 

謝謝!

回答

3

您已在腳本頂部定義了m,因此您無需查找它in document。只要循環使用像你這樣循環數組(mNodeList對象,但它有一個length屬性像數組一樣):

for(var i=0; i<m.length; i++) { 
    // do something with each m[i] 
} 
1

三個問題

  • 你迭代的正確
  • 您樣式分配不正確:
  • getElementsByClassName將始終返回一個對象,即使它是一個空集。檢查它的長度屬性以查看是否返回任何元素。

 

for (var i = 0, len = m.length; i<len; i++) { 
    if (m[i].getElementsByClassName('print').length > 0){ 
     m.style.opacity=0.3; 
    } 
}