0

这段代码还没有完全完成。我正在尝试遍历页面中的所有“m”变量,直到页面中没有更多的“m”。现在我有'for(m in document)',我知道这是错误的。谁能指出我正确的语法方向?

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')
   }
}

谢谢!

4

2 回答 2

3

您已经m在脚本的顶部进行了定义,因此您不必查找它in document。就像循环数组一样循环它(m是一个NodeList对象,但它有一个length像数组一样的属性):

for(var i=0; i<m.length; i++) {
    // do something with each m[i]
}
于 2012-04-18T23:49:46.657 回答
1

三个问题

  • 你迭代不正确
  • 您的样式分配不正确:
  • getElementsByClassName将始终返回一个对象,即使它是一个空集。检查它的长度属性,看看你是否得到任何元素。

 

for (var i = 0, len = m.length; i<len; i++) {
    if (m[i].getElementsByClassName('print').length > 0 ){
        m.style.opacity=0.3;
    }
}
于 2012-04-19T00:07:13.827 回答