Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Не отрабатывает скрипт (https://javascript.ru/forum/css-html/13992-ne-otrabatyvaet-skript.html)

Romanroman 23.12.2010 12:23

Не отрабатывает скрипт
 
Господа, можете ли подсказать, почему сложилась такая ситуация:
в CSS
Код:

#id1
{
height:10px;
}

Соответственно скрипт:
function HH()
{
alert(document.getElementById('id1').style.height);
}


В теле:
<div id="id1" onclick="HH()">Узнать высоту этого дива</div>




Алерт выдает не высоту элемента, а пустое окно. Выдает корректное значение только, если принудительно скриптом задать высоту для элемента.
В чем может быть загвоздка?

Sweet 23.12.2010 13:44

В том, что свойство .style дает доступ к атрибуту style. В данном случае свойство задано не через атрибут, поэтому в .style.height находится пустая строка. Используй методы getComputedStyle/currentStyle

Sweet 23.12.2010 13:48

<style>
#id1
{
height:10px;
}
</style>
<div id="id1" onclick="HH(this)">Узнать высоту этого дива</div>
<script type="text/javascript">
function HH(element)
{
var computedStyle = element.currentStyle || window.getComputedStyle(element, null);
alert(computedStyle.height);
}
</script>

Romanroman 23.12.2010 14:29

Тогда еще один встречный вопрос, как можно использовать полученную высоту для вычисления? если работать методом parseint(computedStyle), то алерт показывает не числовую переменную

Romanroman 23.12.2010 15:05

И еще один вопрос: как найти реальную высоту в пискелях у дива, если стилем прописано процентное соотношение?

ksa 23.12.2010 15:34

Цитата:

Сообщение от Romanroman
лерт показывает не числовую переменную

Как вариант...

var a='1'
var b=2
alert(+a+b)


Цитата:

Сообщение от Romanroman
как найти реальную высоту в пискелях у дива, если стилем прописано процентное соотношение?

Он тебе её цифрами в пикселях и вернёт... Недавно кто-то с обратной проблемой озадачивался... :)

Romanroman 23.12.2010 16:22

всем спасибо, все свои задачи решил)


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