Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как узнать верхний z-index (https://javascript.ru/forum/dom-window/6276-kak-uznat-verkhnijj-z-index.html)

San4ezy 21.11.2009 15:03

как узнать верхний z-index
 
Подскажите плиз!
На странице динамически появляются и исчезают элементы div.
Мне нужно в обработчике события выполнить след.:
1. Определить кол-во дивов
2. Узнать ид верхнего дива (каждый див в своем слое)
3. Заменить зИндексы верхнего и выбранного дива

Вот решение:
function Up(win_id){//win_id - ид выбранного дива
  win1=document.getElementById(win_id);
  win2=document.getElementById(win2_id);//win2_id - ид верхнего дива
  az=win1.style.zIndex;
  bz=win2.style.zIndex;
  win1.style.zIndex=bz;
  win2.style.zIndex=az;
}

Как мне узнать win2_id?

subzey 21.11.2009 15:35

Решение находится в самой формулировке — перебрать все дивы, и взять тот, у которого .style.zIndex максимальный.

Но, мне кажется, Вы как-то неверно решаете задачу, содержимое документа не должно оказываться для программиста «темным лесом» с проблематичной выборкой нужного элемента. (…только если Вы не пишете юзерскрипт, тогда это дело более обычное :))

Расскажите, чего Вы хотите добиться, и используете ли яваскриптовые фреймворки, и я постараюсь дать Вам более конкретный совет.

San4ezy 21.11.2009 15:43

Фреймворки не использую (хотя может и стоит;) )
Реализовать нужно драг-н-дроп объектов. Все необходимые задачи по ресайзингу и мувингу уже реализовал. Вот осталось только сделать, чтобы активный объект занимал верхний слой

subzey 21.11.2009 17:18

Гхм-м... почему бы тогда не создать css'ное правило
<style type="text/css">
.js-active-element {
z-index: 10000000;
}
</style>

и не задавать его активному элементу? Я так понял, он в любой момент времени один и только один.

UPD: Фреймворки, ИМХО, не стóит использовать ни для чего сложнее заурядных сайтов. В конце концов, именно для обычных сайтов они и делаются.

B~Vladi 21.11.2009 17:44

Цитата:

Сообщение от San4ezy
az=win1.style.zIndex;
bz=win2.style.zIndex;

Решение не универсальное, ибо индексы, заданные в стиляхт так не отловишь.
Цитата:

Сообщение от subzey
z-index: 10000000;

9999 - край для оперы.

Имхо, тут jQuery ой как помог бы:)

Octane 21.11.2009 18:12

Цитата:

Сообщение от subzey
Решение находится в самой формулировке — перебрать все дивы, и взять тот, у которого .style.zIndex максимальный.

Цитата:

Сообщение от B~Vladi
Решение не универсальное, ибо индексы, заданные в стиляхт так не отловишь.

Вообще zIndex проблематично определить, можно получить просто значение "auto":
document.body.style.position = "absolute";
alert((getComputedStyle ? getComputedStyle(document.body, null) : document.body.currentStyle).zIndex);


Часовой пояс GMT +3, время: 11:54.