Показать сообщение отдельно
  #2 (permalink)  
Старый 18.02.2010, 18:06
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Если целью скрипта является лишь смена отображения, можно менять класс у обвертки, таким образом убрав все данные об открытых блоках в одно место и делегировав состояния css, вместо того, чтобы их отслеживать руками.

Например, так:
<style type="text/css">
	.tpl-togglebox {display: none}
	#tpl-togglebox-group.state-1 .tpl-togglebox-1,
	#tpl-togglebox-group.state-2 .tpl-togglebox-2 {
		display: block;
	}
</style>
<script type="text/javascript" src="/misc/pack.2.js"></script>
<script type="text/javascript">
	function switchToggleBox(n){
		var toggleboxGroup = document.getElementById("tpl-togglebox-group");
		toggleboxGroup.className = (toggleboxGroup.className.replace(/(^|\s)+state-[^\s]+/g, '') + " state-" + n);
	}
</script>

<div id="tpl-togglebox-group" class="state-1">
	<div class="tpl-togglebox tpl-togglebox-1">Блок 1</div>
	<div class="tpl-togglebox tpl-togglebox-2">2-й блок</div>
</div>
<button onclick="switchToggleBox(1)">1</button>
<button onclick="switchToggleBox(2)">2</button>
Ответить с цитированием