Хочу отметить важное замечание, метод 
.getElementsByClassName реализован полностью по указаниям спецификации, то-есть все реализации лежащие по инету не правильные, и сделаны из-за невнимательности прочтения документа.
Как работает метод, который все выкладывают по инету:
допустим мы хотим найти элемент с классом .blah
document.getElementsByClassName( 'blah' ); // все как и везде
 Но если указать список классов:
document.getElementsByClassName( 'blah lala' );
 То в этом случае реализации кишащие по инету выдадут все элементы с классом 
.blah и элементы с классом 
.lala то-есть:
<div class="blah"></div>
<div class="lala"></div>
 Найдет оба элемента, так как они удовлетворяют запросам.
Как же все таки реально должен работать этот метод, то-есть как описано в спецификации. При попытке искать со списком классов, то-есть у нас есть HTML:
<div class="blah"></div>
<div class="lala"></div>
 и мы пытаемся найти элементы:
document.getElementsByClassName( 'blah lala' );
 Нам метод не выдаст ни одного элемента, потому что по критериям не проходят. Отличия тут таковы, что список этих классов должен иметь один и тот-же элемент, если хоть одного класса в элементе нет, то он пропускается. То-есть наш код найдет элемент например вот такой:
<div class="lala blah"></div>
 или такой:
<div class="lala test some blah"></div>
Вот такие вот секреты рассказывает нам этот метод и спецификация, которую почему-то все читают не так как я 
