1) Используйте document.getElementsByClassName метод. Для IE7-8 добавлен костыль.
2) break останавливает цикл. Поэтому ваш код обрабатывает только первый элемент
3) Раз мы уже выбрали элементы с классом info, то зачем еще одна проверка?
4) Перед i потеряли ключевое слово var, в итоге объявили ее как глобальную.
С учетом сказанного выше:
<html>
<head>
</head>
<body>
<div class="info">111</div>
<div class="info">222</div>
<div class="info">333</div>
<br>
<input type="button" value="search" onclick="search();">
<script>
if (!document.getElementsByClassName) {
document.getElementsByClassName = function(search) {
var d = document, elements, pattern, i, results = [];
if (d.querySelectorAll) { // IE8
return d.querySelectorAll("." + search);
}
if (d.evaluate) { // IE6, IE7
pattern = ".//*[contains(concat(' ', @class, ' '), ' " + search + " ')]";
elements = d.evaluate(pattern, d, null, 0, null);
while ((i = elements.iterateNext())) {
results.push(i);
}
} else {
elements = d.getElementsByTagName("*");
pattern = new RegExp("(^|\\s)" + search + "(\\s|$)");
for (i = 0; i < elements.length; i++) {
if ( pattern.test(elements[i].className) ) {
results.push(elements[i]);
}
}
}
return results;
}
}
function search() {
var elements = document.getElementsByClassName('info');
var contents = [];
for (var i=0; i < elements.length; i++) {
contents[i] = elements[i].innerText || elements[i].textContent || '';
}
var result = contents.join(' - ');
alert( result );
}
</script>
</body>
</html>