Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Как узнать width элемента в ie? (https://javascript.ru/forum/css-html-internet-explorer/22952-kak-uznat-width-ehlementa-v-ie.html)

trikadin 07.11.2011 03:16

Как узнать width элемента в ie?
 
Как узнать пиксельное значение ширины (без padding'ов, margin'ов и border'ов) объекта в internet explorer при процентном указании ширины и padding'ов? elem.currentStyle возвращает значение в процентах. offsetWidth берётся с padding'ами и border'ами. clientWidth вообще чёрти что выдаёт (при неуказанной высоте - о, при указанной - тоже, что и в ff - без border'ов, но с padding'ами). Есть какой-то способ?

Magneto 07.11.2011 04:59

Я знаю следующие свойства:
element.width
element.clientWidth
element.offsetWidth

, а element.currentStyle возвращает те значения которые заданы в таблице стилей.

trikadin 07.11.2011 05:17

Цитата:

Сообщение от Magneto
element.width

Возвращает undefined. Про следующие два я уже писал. И про currentStyle тоже...

Придумал такое:
<div style="width: 10%; padding: 5%;" id="div"></div>
<script>
el= document.getElementById("div");
real= el.offsetWidth; // запоминаем
el.width= el.offsetWidth+"px"; // ставим ему offsetWidth как ширину.
padding_value= el.offsetWidth-real; // их разница и будет значением отступов и границ
</script>

Но это как-то... Извращённо.

Magneto 07.11.2011 10:43

Похоже element.width устаревшее свойство. У меня справочник довольно старенький. Может у кого есть новый справочник?

dmitriymar 07.11.2011 14:55

Цитата:

Сообщение от Magneto
Похоже element.width устаревшее свойство.

element.style.width
Цитата:

Сообщение от trikadin
Уважаемые спрашивающие! Ответы на многие ваши вопросы есть в книжках. В частности, это книги:
1) Джон Резиг - "Профессиональные приёмы программирования"
2) Дэвид Флэнаган - "Javascript. Подробное руководство"

trikadin,
ответ на твой вопрос есть во второй книге

Magneto 07.11.2011 16:04

Все же я имел ввиду element.width, вполне возможно что ошибка в справочнике.

trikadin 07.11.2011 16:11

dmitriymar, мне кажется, вы не совсем правильно меня поняли...

<style>
#div {
 width: 50%;
 height: 50%
 padding: 5%;
 border: 5%;
}
</style>
<div id="div">Как победить ie?</ie>
<script>
el= document.getElementById("div");
alert("elememt.style.width: " + el.style.width);
alert("computedStyle: " + (document.defaultView && document.defaultView.getComputedStyle(el).getPropertyValue("width")));// нормальные браузеры. Всё в пикселях
alert("currentStyle: " + (el.currentStyle && el.currentStyle["width"]));// ie. Тут проценты...
alert("offsetWidth: "+el.offsetWidth); // полная ширина элемента - вместе с padding'ами и border'ами. А нужна без них))
</script>


Книжку перечитал. Гугл помучал.

dmitriymar 07.11.2011 16:33

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

trikadin 07.11.2011 16:42

Цитата:

Сообщение от dmitriymar
возможно у нас разные издания Фленегана

Пятое. А у вас?

ksa 07.11.2011 16:48

Ну как тут не вспомнить классика! :lol:
...
- И пиво.
- Какое?
- А какое есть?
- Какое вас интересует? У нас восемь сортов.
- А какое меня интересует? Жигулевское пятый сорт!
(с) М.Жванецкий "На складе"


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