Показать сообщение отдельно
  #4 (permalink)  
Старый 21.04.2012, 19:59
Аспирант
Отправить личное сообщение для Caminante Посмотреть профиль Найти все сообщения от Caminante
 
Регистрация: 23.03.2012
Сообщений: 40

В принципе подход верный, только при этом у всех блоков будет меняться значение display на противоположное. А нужно, чтобы при этом у элемента, на который нажали, display было block, а у остальных - none.

function ShowOrHide(id)
	{
        // обозначаем контейнер
	var container = documentGetElementById('container');	 
      
        //собираем все div'ы внутри контейнера
	var divs = container.getElementsBYTagName('div');

        //проходимся циклом по всем div'ам
	 for(var i = 0; i<divs.length; i++)
	{
	var divId = divs[i].id;
	if (divId == id)
        // если id текущего div'а совпадает с id, переданным функции, делаем его видимым
	document.getElementById(divId).style.display = 'block';
	else
        //остальные элементы делаем невидимыми
	document.getElementById(divId).style.display =  'none';
	}
	}


Еще можно на jQuery сделать, будет выглядеть примерно:
$('div[id^=newsbar]').toggleClass('visible').toggleClass('invisible');

При этом надо задать классу visible значение display: none и наоборот.
Ответить с цитированием