imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 14.08.2003, 12:57     # 1
Dmitry_A
Guest
 
Сообщения: n/a

Unhappy Вопрос по JavaScript

У меня возникла проблема .

разные браузеры по разному реагируют на строчку

this.style.backgroundColor='....'; например ИЕ ее вообе не понимает и при этом как и положено ругается... ,а такую
this.setAttribute('bgcolor', '#d3d3d3', 0);
понимает как надо , но при этом продолжает ругатся...
хотя и понимать ее стал только IE начиная с 5 =(

где можно узнать . какие команды какие браузеры поддерживают или лучше подскажите как эту проблему решить проще (как функцию написать чтобы она оперделяла браузер и подставляла ту или иную команду)...

вопрос второй .

у меня есть функция которая отвечает за то ,что она показывает и прачет слои .

Как написать функцию .которая прячет все слои
ид которых забиты в массив . при этом исключая определенный слой.

(надоело писать что-то типа ...
<a class = "black" href =<? echo $this->home;?> onMouseOver="hiddenLayer('PO'); hiddenLayer('build'); hiddenLayer('buildsub'); hiddenLayer('subPO')">

PS я все делал под оперу. а когда полез проверять в другие
браузеры вот такая фигня выползла ....
 
Старый 14.08.2003, 13:17     # 2
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
<TD bgcolor=#ffffff onMouseOver="this.style.backgroundColor='#000000';" onMouseOut="this.style.backgroundColor='#ffffff';">

Все работает...

Добавлено через 3 минуты:
По поводу слоев:
Так же написать функцию, которая прячет все слои кроме того слоя, id которого передается в эту "прячущую" функцию в качестве параметра.
Вроде думаю надо именно так делать Понял?
sanchos вне форума  
Старый 14.08.2003, 13:17     # 3
Dmitry_A
Guest
 
Сообщения: n/a

У меня в опере работает, а в IE и еще одном браузере .. напроч отказывается
 
Старый 14.08.2003, 13:18     # 4
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Я только что специально проверил. Работает. У меня старенький ослик ИЕ :/
sanchos вне форума  
Старый 14.08.2003, 13:40     # 5
Dmitry_A
Guest
 
Сообщения: n/a

Причина почему мне надо прятать все слои из массива. в том , что если я буду прятать слои без разбора =) то у меня от страници НИЧЕГО кроме одной таблици не останется =) , а я в JavaScript полный чайник

Добавлено через 19 минут:
sanchos попробуй зайти на www.thr.ru/new/

и там левая часть меню сделана с использованием this.style.backgroundColor
а верхняя при помощи this.setAttribute()

я тогда непонимаю почему в первом случае у меня ИЕ лепит ошибки ( и во втором тоже .. но хотябы работает )
 
Старый 14.08.2003, 14:46     # 6
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Чего-то ты меня паришь. Ошибки у тебя заметил... выскакивают и у меня
Скачал твою страницу... решил поправить один столбец (Вакансии). Все работает!
Вот твой код, исправленный мной. Уберай нафиг setAttribute и ставь style.background. Вот тебе пример:
<TD onmouseout="this.style.backgroundColor='#ffffff';"
onmouseover="this.style.backgroundColor='#d3d3d3';" vAlign=center
width=162><A class=black href="http://www.thr.ru/new/Personal/"
onmouseover="hiddenLayer('PO'); hiddenLayer('build'); hiddenLayer('buildsub'); hiddenLayer('subPO')">

Работает?

Добавлено через 1 минуту:
Цитата:
Dmitry_A:
Как написать функцию .которая прячет все слои
ид которых забиты в массив . при этом исключая определенный слой.
Или я чего-то недопонял?
sanchos вне форума  
Старый 14.08.2003, 14:50     # 7
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Первое, что бросается в глаза это попытка задать цвет:
Код:
this.style.backgroundColor='lightgray'
Вообще стандартные 16 цветов, это: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white и yellow ...
RaZEr вне форума  
Старый 14.08.2003, 14:57     # 8
Dmitry_A
Guest
 
Сообщения: n/a

да работает Спасибо ... я каежтся понял почему у меня background неработал изначально ... setAttribut выполз после долгих попыток понять почему неработало.
 
Старый 14.08.2003, 15:00     # 9
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Мне вот интересно... И почему?
sanchos вне форума  
Старый 14.08.2003, 15:09     # 10
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
я каежтся понял почему у меня background неработал изначально
ну и почему же ?
RaZEr вне форума  
Старый 14.08.2003, 15:24     # 11
Dmitry_A
Guest
 
Сообщения: n/a

this.style.backgroundColor='lightgray'
IE это как то неочень понимает =)) RaZEr я прочитал твое сообщение после того как понял это сам =))

я незнал что IE незнает таких цветов .. опера прекрасно к ним относится..

но спасибо , что указал на ошибку ...
 
Старый 14.08.2003, 15:40     # 12
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Опера на движе мозиллы ... а та понимает не стандартные 16 цветов из HTML 4.0, а расширенные SVG или проще говоря Мозилла уже пытается поддерживать CSSv3
RaZEr вне форума  
Старый 14.08.2003, 16:02     # 13
Dmitry_A
Guest
 
Сообщения: n/a

теперь перейдем ко второму вопросу .. т.к. я полный чайник в js

function hiddenLayer(layer) {
init();
if(IE) eval('document.all[layer].style.visibility = "hidden"')
if(NC) eval('document.layers[layer].visibility = "hidden"')
if(Opera) eval('document.getElementById(layer).style.visibility = "hidden"')
}

функция прячет мои слои ..
но писать вот так
<a class = "black" href = # onMouseOver="showLayer('PO'); hiddenLayer('build'); hiddenLayer('buildsub'); hiddenLayer('subPO')" >
меня уже достало ..

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


Последний раз редактировалось Dmitry_A; 14.08.2003 в 16:12.
 
Старый 17.08.2003, 11:34     # 14
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Тебе нужно прятать все слои кроме ОДНОГО? Так?
sanchos вне форума  
Старый 18.08.2003, 12:41     # 15
Dmitry_A
Guest
 
Сообщения: n/a

Да именно так.
 
Старый 18.08.2003, 13:37     # 16
Aeon
::VIP::
 
Аватар для Aeon
 
Регистрация: 28.06.2002
Адрес: neverwhere
Сообщения: 1 166

Aeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собой
Dmitry_A
ну сделай функцию чтобы брала имя слоя как аргумент, прятала все слои кроме него и показывала его. подробнее объяснять, или разберёшься?
Aeon вне форума  
Старый 18.08.2003, 14:38     # 17
Dmitry_A
Guest
 
Сообщения: n/a

в том то и дело ,что я незнаю "как спрятать все слои ..." я в яваскрипте практически 0 ... я с ним связался случайно ... и теперь приходится пытатся его понять...
 
Старый 18.08.2003, 14:52     # 18
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Код:
function visibleLayer(layer){
init();
var allLayers = new Array("l1", "l2", "l3", "l4", "l5"); // массив из имен слоев
for(i = 0; i < allLayers.length; i++){
    // если нужный слой, то показываем
    if(allLayers[i] == layer){
       if(IE) eval('document.all[layer].style.visibility = "visible"');
       if(NC) eval('document.layers[layer].visibility = "visible"');
       if(Opera) eval('document.getElementById(layer).style.visibility = "visible"');
       continue;
       }
    // прячем слой, если ненужный
    if(IE) eval('document.all[allLayers[i]].style.visibility = "hidden"');
    if(NC) eval('document.layers[allLayers[i]].visibility = "hidden"');
    if(Opera) eval('document.getElementById(allLayers[i]).style.visibility = "hidden"');
    }
}
Вроде, должно работать...
Юзать так:
<A href=# onMouseOver="visibleLayer('тот слой, который нужно оставить видимым')">

Получилось?
sanchos вне форума  
Старый 18.08.2003, 15:07     # 19
Dmitry_A
Guest
 
Сообщения: n/a

да получилось ...
спасибо .. особенно за комментарии ...
 
Старый 18.08.2003, 15:43     # 20
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Dmitry_A
Незачто Удачи тебе!
sanchos вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 07:37.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.