Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ширина в IE

18K
02 августа 2006 года
flajer
6 / / 19.07.2006
Добрый день.
есть:
 
Код:
<div id="layer_name" style="position:absolute;top:100;left:100;"> ... </div>


почему
 
Код:
document.getElementById('layer_name').clientWidth
возвращает 0???
:(
13
02 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
Правильно так:

 
Код:
document.getElementById('layer_name').style.clientWidth
13
02 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
ой... че-то это я написал???

Что вы собственно хотите узнать?! ширину окна браузера? или слоя?!
18K
02 августа 2006 года
flajer
6 / / 19.07.2006
[QUOTE=RussianSpy]ой... че-то это я написал???

Что вы собственно хотите узнать?! ширину окна браузера? или слоя?![/QUOTE]

 
Код:
document.getElementById('layer_name').style.clientWidth

В Internet Explorer возвращает [COLOR="Red"]0[/COLOR]! проверил на двух компах с разной виндой и разными версиями IE (5, 6).
Мне надо узнать ширину слоя.
832
02 августа 2006 года
Carpus
390 / / 14.04.2005
Если ширина не задана явно (<div style="width: 200px;"...), clientWidth и будет возвращать 0.

Можно использовать offsetWidth - document.getElementById('layer_name').offsetWidth.
8
03 августа 2006 года
mfender
3.5K / / 15.06.2005
Есть такая замечательная вещь - DOM-инспектор. Предлагаю пользоваться им. Тогда подобные вопросы отпадут сами собой: там будет видно, что этот слой не имеет ширины.
13
03 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
А еще можно воспользоваться простеньким парсером свойств и методов объекта. Вот такая функция не раз спасала меня в ситуациях когда мозг напрочь отказывался вспоминать навороченную объектную модель документа.
Код:
<div id="console" style="width:950;height:400;"></div>
<script>        
function tree(obj)
         {
            document.getElementById('console').innerHTML+="<UL>\n";
            for (var i in obj)
            {
               document.getElementById('console').innerHTML+=("<LI>" + i);
               if (typeof obj != "object")
               {
                  document.getElementById('console').innerHTML+=(" = "+obj);
               }
               else document.getElementById('console').innerHTML+="</LI>";
            }
            document.getElementById('console').innerHTML+="</UL>\n";
         }
</script>
18K
03 августа 2006 года
flajer
6 / / 19.07.2006
[QUOTE=RussianSpy]А еще можно воспользоваться простеньким парсером свойств и методов объекта. Вот такая функция не раз спасала меня в ситуациях когда мозг напрочь отказывался вспоминать навороченную объектную модель документа.
[/QUOTE]

А что передаётся в переменной obj???
13
03 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
Любой объект. Например так
 
Код:
<script>
tree(document.getElementById('layer_name').style);
</script>
18K
03 августа 2006 года
flajer
6 / / 19.07.2006
RussianSpy, за функцию спасибо, токо она не помогла в данном случае. Попробую подробней обяснить проблему.
Код:
<script>
function ShowMenu(obj){
    if(document.getElementById(obj).style.visibility='hidden')
       document.getElementById(obj).style.visibility='visible';
    else
       document.getElementById(obj).style.visibility='hidden';
}
<div id="layer_menu" name="layer_menu" style="position:absolute; top:100; left:100; background-color:#ffffff;" &#111;&#110;mouseover="ShowMenu('layer_submenu');" &#111;&#110;mouseout="ShowMenu('layer_submenu');">
....
</div>
<div id="layer_submenu" name="layer_submenu" style="position:absolute; top:100; left:100; background-color:#ffffff;">
....
</div>
<script>
document.getElementById('layer_menu').style.left=(Math.ceil((document.body.clientWidth-1000)/2)+164); // первый слой, в незовисимости от разрешения екрана, ставится в нужном месте
document.getElementById('layer_subenu').style.left=document.getElementById('layer_menu').clientWidth+document.getElementById('layer_menu').offsetLeft;
</script>


Обясняю: Есть два слоя. Содержут динамическую информацию, по этому зарание определять ширину нельзя. Дизайн страницы не растягивается, по этоу если разрешение монитора больше, до дизайн распологается в центре. Данные слои надо расположить в правельном месте. Первый слой можно расположить изходя из ширины окна. Второй слой этимже способам правельно расположить нельзя, так как на разных разрешениях размещается по разному (негодитса). Способ, который я написал в коде для размещения "layer_submenu" работает только в Mozilla а в IE отказываетса. Пожалусто помогите :(
Может есть другой способ???
13
03 августа 2006 года
RussianSpy
3.0K / / 04.07.2006
А сколько же тут ошибок и очепяток!!!!!
Вот исправленная версия:
Код:
<script>
function ShowMenu(obj){
    if(document.getElementById(obj).style.visibility=='hidden')
       document.getElementById(obj).style.visibility='visible';
    else
       document.getElementById(obj).style.visibility='hidden';
}
<div id="layer_menu" style="position:absolute; top:100px; left:100px; background-color:#ffffff;" &#111;&#110;mouseover="ShowMenu('layer_submenu');" &#111;&#110;mouseout="ShowMenu('layer_submenu');">
....
</div>
<div id="layer_submenu" style="position:absolute; top:100px; left:100px; background-color:#ffffff;">
....
</div>
<script>
document.getElementById('layer_menu').style.left=(Math.ceil((document.body.clientWidth-1000)/2)+164);
document.getElementById('layer_submenu').style.left=document.getElementById('layer_menu').clientWidth+document.getElementById('layer_menu').offsetLeft;
</script>

Может потому и не работает что много опечаток и синтаксических ошибок?!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог