![]() |
Вопрос по 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 я все делал под оперу. а когда полез проверять в другие браузеры вот такая фигня выползла .... |
<TD bgcolor=#ffffff onMouseOver="this.style.backgroundColor='#000000';" onMouseOut="this.style.backgroundColor='#ffffff';">
Все работает... Добавлено через 3 минуты: По поводу слоев: Так же написать функцию, которая прячет все слои кроме того слоя, id которого передается в эту "прячущую" функцию в качестве параметра. Вроде думаю надо именно так делать :) Понял? :) |
У меня в опере работает, а в IE и еще одном браузере .. напроч отказывается
|
Я только что специально проверил. Работает. У меня старенький ослик ИЕ :/
|
Причина почему мне надо прятать все слои из массива. в том , что если я буду прятать слои без разбора =) то у меня от страници НИЧЕГО кроме одной таблици не останется =) , а я в JavaScript полный чайник :(
Добавлено через 19 минут: sanchos попробуй зайти на www.thr.ru/new/ и там левая часть меню сделана с использованием this.style.backgroundColor а верхняя при помощи this.setAttribute() я тогда непонимаю почему в первом случае у меня ИЕ лепит ошибки ( и во втором тоже .. но хотябы работает ) |
Чего-то ты меня паришь. Ошибки у тебя заметил... выскакивают и у меня :(
Скачал твою страницу... решил поправить один столбец (Вакансии). Все работает! Вот твой код, исправленный мной. Уберай нафиг 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 минуту: Цитата:
|
Первое, что бросается в глаза это попытка задать цвет:
Код:
this.style.backgroundColor='lightgray' |
да работает Спасибо ... я каежтся понял почему у меня background неработал изначально ... setAttribut выполз после долгих попыток понять почему неработало.
|
Мне вот интересно... И почему? :)
|
Цитата:
|
this.style.backgroundColor='lightgray' :)
IE это как то неочень понимает =)) RaZEr я прочитал твое сообщение после того как понял это сам =)) я незнал что IE незнает таких цветов .. опера прекрасно к ним относится.. но спасибо , что указал на ошибку ... |
Опера на движе мозиллы ... а та понимает не стандартные 16 цветов из HTML 4.0, а расширенные SVG или проще говоря Мозилла уже пытается поддерживать CSSv3
|
теперь перейдем ко второму вопросу .. т.к. я полный чайник в 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
ну сделай функцию чтобы брала имя слоя как аргумент, прятала все слои кроме него и показывала его. подробнее объяснять, или разберёшься? |
в том то и дело ,что я незнаю "как спрятать все слои ..." я в яваскрипте практически 0 ... я с ним связался случайно ... и теперь приходится пытатся его понять... :rolleyes:
|
Код:
function visibleLayer(layer){ Юзать так: <A href=# onMouseOver="visibleLayer('тот слой, который нужно оставить видимым')"> Получилось? :) |
да получилось ...
спасибо .. особенно за комментарии ... :) |
Dmitry_A
Незачто :) Удачи тебе! |
Часовой пояс GMT +4, время: 05:02. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.