Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: Greg от 26 Июля 2006, 13:30:10

Название: выбор по ID элемента
Отправлено: 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 не пердается значение слоя, а нужно, чтобы передавалось. Как поступить?
Название: выбор по ID элемента
Отправлено: CGVictor от 26 Июля 2006, 14:36:01
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\';
    }
  }
}
Название: выбор по ID элемента
Отправлено: html_coder от 26 Июля 2006, 14:38:33
А что такое значение слоя, я так понимаю это просто код внутри тегов, тогда можно например target.innerHTML
Название: выбор по ID элемента
Отправлено: Greg от 26 Июля 2006, 14:44:54
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="";
    }

....<несколько таких похожих блоков>
  }
}
Название: выбор по ID элемента
Отправлено: html_coder от 26 Июля 2006, 14:46:27
Хотя CGVictor ближе к истине...
Название: выбор по ID элемента
Отправлено: Greg от 26 Июля 2006, 15:11:43
так... alert уже выдает ИД слоя, надо было просто сделать вот так:

if (target.id==\'defolt\')
{
alert (target.id);
}
 это сокращенный вариант.

нов вот, что касается выбора и установки видимости слоев, то опять же тормоз. вот здесь:

document.work.style.display="none";
    document.need.style.display="none";
    document.defolt.style.display="";
Название: выбор по ID элемента
Отправлено: avb от 26 Июля 2006, 15:17:47
id слоя - document.getElementById(Mytarget).id
Название: выбор по ID элемента
Отправлено: avb от 26 Июля 2006, 15:18:16
упс, не успел...
Название: выбор по ID элемента
Отправлено: Greg от 26 Июля 2006, 15:20:58
avb
а что по поводу доступа к свойству видимости слоя? вроде бы условие выполняется, но изменение свойств не происходит: что не так, не могу увидеть
Название: выбор по ID элемента
Отправлено: Greg от 26 Июля 2006, 15:31:12
о! все получилось нужно было обращаться так:
work.style.display="none";
т.е без "document."
Название: выбор по ID элемента
Отправлено: avb от 26 Июля 2006, 15:32:33
В target у тебя ссылка на объект. Поэтому чтобы поменять ему стиль делай :
target.style.display="none";

Тебе наверное лучше будет иметь массив объектов (не id, а именно объектов), то есть массив с элементами document.getElementById(\'Ид дива\')
Затем для каждого element из массива проверяешь:
если Mytarget == element.id, то display =""
в противном случае - display = "none"

А вообще, у тебя похоже в каждый момент будет отображаться только один див. Продумай возможность его запоминания, чтобы при каждом клике не перебирать весь массив.
Название: выбор по ID элемента
Отправлено: Greg от 26 Июля 2006, 16:02:18
в догонку вопрос: как изменить свойство background-color какого-либо элемента?

то есть видимостью мы управляем так:
some_id.style.display="none/block";
но вариант с
some_id.style.background-color="#eaeaea";
например не проходит... как быть?
Название: выбор по ID элемента
Отправлено: for_i_0 от 26 Июля 2006, 16:03:59
Greg
пологаю не помешает.
The display declaration (http://www.quirksmode.org/css/display.html)
Название: выбор по ID элемента
Отправлено: avb от 26 Июля 2006, 16:06:41
document.getElementById("elementID").style.backgroundColor
Название: выбор по ID элемента
Отправлено: Greg от 26 Июля 2006, 16:09:46
avb
отлично! большое спасибо!

думаю тему пока не нужно закрывать, может ещё вопросы появятся

for_i_0
:) и тебе спасибо, но спецификация у меня есть)))
Название: выбор по ID элемента
Отправлено: for_i_0 от 26 Июля 2006, 16:21:12
Greg
тогда ее нужно хотеть читать. :)