Forum Webscript.Ru
		Программирование => JavaScript & JScript => Тема начата: Greg от 26 Июля 2006, 13:30:10
		
			
			- 
				сразу предупрежу, что в жабаскрипте я почти нулек))
итак суть вопроса:
есть три слоя на странице:
Слой 1
Слой 2
Слой 3
есть простенькие ссылки вида:
ссылка1
и т.д...
 
и есть такая простенькая функция:
function onoff (Mytarget)
{
if (document.getElementById)
{target=document.getElementById(Mytarget);
alert(target);}
}
но этот alert выдает [object]
то есть в переменную target не пердается значение слоя, а нужно, чтобы передавалось. Как поступить?
			 
			
			- 
				Greg 
"Значение слоя" и есть [object].
Это искал? :)
function onoff (Mytarget)
{
  if (document.getElementById) {
    target=document.getElementById(Mytarget);
    if(target.style.display!=\'none\') {
      target.style.display = \'none\';
    } else {
      target.style.display = \'block\';
    }
  }
}
			 
			
			- 
				А что такое значение слоя, я так понимаю это просто код внутри тегов, тогда можно например target.innerHTML
			
 
			
			- 
				CGVictor 
нет, такой кодец у меня уже есть)))
я его немного хочу переделать и получить нечто вроде переключения слоев: если один показан, остальные спрятаны. "значение слоя" - это его ИД (очевидно неправильно выразился.
то есть вот у меня сейчас примерно такой код (по голове за идиотский код не бить :) ):
function onoff (Mytarget)
{
if (document.getElementById)
  {target=document.getElementById(Mytarget);
  if (target==\'defolt\')
    {
    alert(target);
    document.work.style.display="none";
    document.need.style.display="none";
    document.defolt.style.display="";
    }
....<несколько таких похожих блоков>
  }
}
			 
			
			- 
				Хотя CGVictor ближе к истине...
			
 
			
			- 
				так... alert уже выдает ИД слоя, надо было просто сделать вот так:
if (target.id==\'defolt\')
{
alert (target.id);
}
 это сокращенный вариант.
нов вот, что касается выбора и установки видимости слоев, то опять же тормоз. вот здесь:
document.work.style.display="none";
    document.need.style.display="none";
    document.defolt.style.display="";
			 
			
			- 
				id слоя - document.getElementById(Mytarget).id
			
 
			
			- 
				упс, не успел...
			
 
			
			- 
				avb 
а что по поводу доступа к свойству видимости слоя? вроде бы условие выполняется, но изменение свойств не происходит: что не так, не могу увидеть
			 
			
			- 
				о! все получилось нужно было обращаться так:
work.style.display="none";
т.е без "document."
			 
			
			- 
				В target у тебя ссылка на объект. Поэтому чтобы поменять ему стиль делай :
target.style.display="none";
Тебе наверное лучше будет иметь массив объектов (не id, а именно объектов), то есть массив с элементами document.getElementById(\'Ид дива\')
Затем для каждого element из массива проверяешь:
если Mytarget == element.id, то display =""
в противном случае - display = "none"
А вообще, у тебя похоже в каждый момент будет отображаться только один див. Продумай возможность его запоминания, чтобы при каждом клике не перебирать весь массив.
			 
			
			- 
				в догонку вопрос: как изменить свойство background-color какого-либо элемента?
то есть видимостью мы управляем так: 
some_id.style.display="none/block";
но вариант с 
some_id.style.background-color="#eaeaea";
например не проходит... как быть?
			 
			
			- 
				Greg 
пологаю не помешает.
The display declaration (http://www.quirksmode.org/css/display.html)
			 
			
			- 
				document.getElementById("elementID").style.backgroundColor
			
 
			
			- 
				avb 
отлично! большое спасибо!
думаю тему пока не нужно закрывать, может ещё вопросы появятся
for_i_0 
:) и тебе спасибо, но спецификация у меня есть)))
			 
			
			- 
				Greg 
тогда ее нужно хотеть читать. :)