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
тогда ее нужно хотеть читать. :)