Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как правильно определить переменную в IE на JS
 
 автор: prosaic   (15.05.2008 в 16:07)   письмо автору
 
 

всем привет.
у меня такая проблема: нужно определить высоту объекта, я использую такой код:


var crossobj = document.getElementById ? document.getElementById("desc") : document.all.desc

var elemheight  = crossobj.offsetHeight


во всех браузерах этот код работает кроме IE. подскажите, как правильно определять переменную в IE ?

   
 
 автор: Lelik   (15.05.2008 в 16:09)   письмо автору
 
   для: prosaic   (15.05.2008 в 16:07)
 

document.getElementById работает во всех браузерах, его и нужно использовать

var crossobj = document.getElementById("desc");

var elemheight  =crossobj.clientHeight ? crossobj.clientHeight : crossobj.offsetHeight

   
 
 автор: prosaic   (15.05.2008 в 16:31)   письмо автору
 
   для: Lelik   (15.05.2008 в 16:09)
 

да, в отдельно созданном файле работает. но в моём коде не проходит.
причём getElementById определяется как объект, но .clientHeight / .offsetHeight выводит как 0

   
 
 автор: Lelik   (15.05.2008 в 16:42)   письмо автору
 
   для: prosaic   (15.05.2008 в 16:31)
 

а к какому элементу применяется код? span? div?

   
 
 автор: prosaic   (15.05.2008 в 16:55)   письмо автору
 
   для: Lelik   (15.05.2008 в 16:42)
 

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

   
 
 автор: Lelik   (15.05.2008 в 17:24)   письмо автору
 
   для: prosaic   (15.05.2008 в 16:55)
 

а если диву назначить стили:

<div style="min-height: 1px; //height:1px;"></div>

   
 
 автор: prosaic   (15.05.2008 в 17:37)   письмо автору
 
   для: Lelik   (15.05.2008 в 17:24)
 

не помогает.

   
 
 автор: Lelik   (15.05.2008 в 17:59)   письмо автору
 
   для: prosaic   (15.05.2008 в 17:37)
 

тогда давай код сюда

   
 
 автор: prosaic   (16.05.2008 в 10:38)   письмо автору
 
   для: Lelik   (15.05.2008 в 17:59)
 

довольно долго капался, но нашел причину. больше похоже на ошибку браузера. оказалось что на работу функций JS влияет вложенность тегов(!)
хахаха

я упростил код, убрав, то что не влияет на ошибку, получилось:


<html>
<body>

<table cellspacing='0' cellpadding='0'>
<tr><td>
    <table cellspacing='0' cellpadding='0'>
    <tr><td>

    <div id='pdesc' style='position:relative;width:340px;height:387px;overflow:hidden;'>
    <div id='rdesc' style='position:absolute;width:338px;left:0px;top:0px'>

    <br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a

    </div></div>

    </td></tr>
    </table>

<script>
var crossobj = document.getElementById("rdesc");
var pdesc = document.getElementById("pdesc");
alert(document.all.rdesc.offsetHeight)
</script>

</td></tr>
</table>

</body>
</html>


этот код выводит нуль.
но если <script>...</script> поставить в конец, то все работает:


<html>
<body>

<table cellspacing='0' cellpadding='0'>
<tr><td>
    <table cellspacing='0' cellpadding='0'>
    <tr><td>

    <div id='pdesc' style='position:relative;width:340px;height:387px;overflow:hidden;'>
    <div id='rdesc' style='position:absolute;width:338px;left:0px;top:0px'>

    <br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a

    </div></div>

    </td></tr>
    </table>

</td></tr>
</table>

<script>
var crossobj = document.getElementById("rdesc");
var pdesc = document.getElementById("pdesc");
alert(document.all.rdesc.offsetHeight)
</script>


</body>
</html>


вот такой бред.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования