Показать сообщение отдельно
  #15 (permalink)  
Старый 24.10.2008, 15:45
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Ну что ж Вы поиском пользоваться не умеете?
Ну ладно напишу здесь сложный вариант
Для новых браузеров достаточно выполнить «getElementsByClassName», напишем функцию, которая будет выполнять тоже самое в старых браузерах:
function findClass(str, node) {
	var node = node || document, list = node.getElementsByTagName('*'), length = list.length, Class = str.split(/\s+/), classes = Class.length, array = [], i, j, key;
	for(i = 0; i < length; i++) {
		key = true;
		for(j = 0; j < classes; j++) if(list[i].className.search('\\b' + Class[j] + '\\b') == -1) key = false;
		if(key) array.push(list[i]);
	}
	return array;
}

Функция получает все дочерние элементы указанного узла «node» или всего документа «document» и затем в цикле ищет элементы у которых в атрибуте «className» встречаются все указанные вами классы.
Теперь для новых браузеров добавим native-функцию «getElementsByClassName», чтобы быстрее работало, для этого в нашу функцию «findClass» добавим условие и одну строчку в начале:
function findClass(str, node) {
	if(document.getElementsByClassName) return (node || document).getElementsByClassName(str);
	else {
		var node = node || document, list = node.getElementsByTagName('*'), length = list.length, Class = str.split(/\s+/), classes = Class.length, array = [], i, j, key;
		for(i = 0; i < length; i++) {
			key = true;
			for(j = 0; j < classes; j++) if(list[i].className.search('\\b' + Class[j] + '\\b') == -1) key = false;
			if(key) array.push(list[i]);
		}
		return array;
	}
}

Теперь рассмотрим как это можно использовать:
window.onload = function() { // После того как готов DOM

       // В цикле пробегаем по всем найденным элементам и скрываем их
	var i, list = findClass('audio'), length = list.length;
	for(i = 0; i < length; i++) list[i].style.display = 'none';

};

В (X)HTML классы могут быть записаны как угодно:
<table class="audio">…</table>
<table class="audio table1">…</table>
<table class="super audio">…</table>
<table class="table2 audio disabled">…</table>

во всех таблицах встречается CSS-класс «audio», и они будут скрыты.

Вот не все так сложно, надо только немного постараться)))

Последний раз редактировалось Octane, 24.10.2008 в 15:49.
Ответить с цитированием