返回循环getElementsByClassName不起作用

时间:2014-09-06 15:08:54

标签: javascript

是各社区讨论的公共问题 <
我没有得到这样一个简单循环的返回:

see jsfiddle

function className(cls){
  var divs = document.getElementsByClassName(cls);
   for(var i=0; i<divs.length; i++) { 
     a = divs[i]
   }
    return a;
}
//example use
className('source').style.display='block';

使用原生javascript非常重要

2 个答案:

答案 0 :(得分:2)

你可以全力以赴地扩展HTMLcollection原型:

function className(cls){
    return document.getElementsByClassName(cls);//a HTMLCollection
}
//extend the HTMLCollection prototype
HTMLCollection.prototype.style = function(newStyles) {
    for (var i = 0; i < this.length; i++) {
        for (var key in newStyles) {
          if (newStyles.hasOwnProperty(key)) {
              this[i].style[key] = newStyles[key];
          }
        }
    }
    return this;
};

//example use
className('source').style({display:'block', color:'red'});

不一定是我建议的,但here's the demo

答案 1 :(得分:1)

不知道这是否是您要找的,但是如果您尝试更改元素的css属性:

function changeClassName(name, attr, value) {

  var divs = document.getElementsByClassName('source');

  for(var x = 0; x < divs.length; x++){

    divs[x].style[attr] = value;
  }

};

changeClassName('source','display','block');

//or
changeClassName('source','display','block');