Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Ширина DIV-а


Автор: transdim 7.3.2006, 14:00
В атрибуте style DIV-а, я не указываю свойство width, т.к. оно у меня может быть разным. Как в JavaScript узнать динамическое значение width?

Автор: Zaman 7.3.2006, 14:04
Код

{
    var elem = document.getElementById('id_elem');
    var result = 0;
    if (elem.offsetWidth) 
    {
        result = elem.offsetWidth;
    } 
    else 
        if (elem.clip && elem.clip.width) 
       {
           result = elem.clip.width;
       } 
        else 
           if (elem.style && elem.style.pixelWidth) 
           {
                result = elem.style.pixelWidth;
           }

Автор: transdim 7.3.2006, 14:30
неа, не помогло... вот глянь:

Код

<html>
  <body>
    <table>
      <tr>
        <td>
          <div id="test" style="BORDER: solid 1px;">
            <table>
              <tr>
                <td>Тестовое значение</td>
              </tr>
            </table>
          </div>
          <script>
              var elem = document.getElementById("test");
              var result = 0;
              if (elem.offsetWidth)
              {
                  result = elem.offsetWidth;
              } 
              else 
                  if (elem.clip && elem.clip.width)
                 {
                     result = elem.clip.width;
                 } 
                  else 
                     if (elem.style && elem.style.pixelWidth) 
                     {
                          result = elem.style.pixelWidth;
                     }
              alert(result);
          </script>
        </td>
      </tr>
    </table>
  </body>
</html>


выдаёт "0" в конце, а ведь видно что ширина далеко не нулевая

Автор: transdim 7.3.2006, 15:24
вообщем запустил подсчёт через какое-то время и всё заработало:

Код

<html>
  <body>
    <table>
      <tr>
        <td>
          <div id="test" style="BORDER: solid 1px;">
            <table>
              <tr>
                <td>Тестовое значение</td>
              </tr>
            </table>
          </div>
          <script>
              function setW() {
              var elem = document.getElementById("test");
              var result = 0;
              if (elem.offsetWidth)
              {
                  result = elem.offsetWidth;
              } 
              else 
                  if (elem.clip && elem.clip.width)
                 {
                     result = elem.clip.width;
                 } 
                  else 
                     if (elem.style && elem.style.pixelWidth) 
                     {
                          result = elem.style.pixelWidth;
                     }
              alert(result);
              return;
              }
              window.setTimeout("setW()",100);
          </script>
        </td>
      </tr>
    </table>
  </body>
</html>


тема закрыта, спасибо Шустрый

Автор: Alx 7.3.2006, 17:30
transdim,
естесственно, элемент доступен только когда вся страница загрузится. поэтому все действия с элементами страницы обворачиваем в функцию и запускаем её по событию onload.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)