Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2013, 19:45
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

Как получить размер div из style?
Вместо ширины в консоль выводится "ничего".

window.onload = function()
{
	var map = document.getElementById("map");
	console.log(map.style.width);
}


Ширину в пикселях можно получить из map.clientWidth, но чисто теоретически, объясните, пожалуйста, почему из стиля нельзя?
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2013, 20:03
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Riddik, наверное, потому что у Вас не задана ширина через стили.

<div onclick="alert(this.style.width)" style="width:200px">Click me</div>
<div onclick="alert(this.style.width)">Click me</div>
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2013, 20:10
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

Задана в css файле, это имеет значение?

#map
{
	position: relative;
	display: block;			
	width: 600px;
	height: 773px;		
}


<div id="map"></div>

Не выводит ничего...
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2013, 20:55
Профессор
Отправить личное сообщение для alexan0308 Посмотреть профиль Найти все сообщения от alexan0308
 
Регистрация: 11.04.2011
Сообщений: 207

map.style.width
и пр. работают в JS, только если они были заданы и изменены через JS
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2013, 21:01
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

alexan0308,
Учту, спасибо)
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2013, 22:40
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

<!DOCTYPE HTML>
<html>
  <head>
    
  <style>
    .divo-divnoe {
        width: 100px;
        height: 100px;
        border: 1px solid #666;
        background: #dbdbdb;
      }
      
    </style>
    
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
    
  </head>
  <body>
    <div class="divo-divnoe">click me!</div>
    <script>
      $(function() {
        $('.divo-divnoe').on('click', function() {
          alert($(this).width() + ' пикселей в ширину');
          alert($(this).css('width') + ' в ширину');
        });
      });



    </script>

  </body>
</html>

Последний раз редактировалось BETEPAH, 14.11.2013 в 23:24.
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2013, 23:41
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от alexan0308
map.style.width
и пр. работают в JS, только если они были заданы и изменены через JS
Это не совсем так
<div id="divo-divnoe" style="width: 100px; height: 100px; border: 1px solid #666; background: #dbdbdb;">click me!</div>
    <script>
      document.getElementById('divo-divnoe').onclick = function(){
        alert(this.style.width + ' в ширину');
      }
    </script>

Правильнее было бы сказать, что .style.width берет стили, которые заданы в инлайне. А jQuery умеет добираться до таблицы.
Ответить с цитированием
  #8 (permalink)  
Старый 15.11.2013, 01:44
Аспирант
Отправить личное сообщение для Riddik Посмотреть профиль Найти все сообщения от Riddik
 
Регистрация: 14.11.2013
Сообщений: 32

BETEPAH,
Спасибо!

На "голом" javascript тоже можно, ведь jQuery просто удобная обёртка.

Последний раз редактировалось Riddik, 15.11.2013 в 01:52.
Ответить с цитированием
  #9 (permalink)  
Старый 15.11.2013, 05:22
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

<!DOCTYPE HTML>
<html>
  
  <head>
    <style>
      #map {
        width: 200px;
      }
    </style>
  </head>
  
  <body>
    <div id="map">Map</div>
    <script>
      window.onload = function () {
        var map = getComputedStyle(document.getElementById('map'), '');
        alert(map.width);
      }
    </script>
  </body>

</html>
Ответить с цитированием
  #10 (permalink)  
Старый 15.11.2013, 10:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от BETEPAH
А jQuery умеет добираться до таблицы
Не умеет. Потому что это очень проблемно, затратно (проход по всем таблицам стилей, тест всех селекторов на соответствие элементу, взвешивание и прочее) и не требуется, так как есть getComputedStyle, как показал Ruslan_xDD.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список элементов в localStorage? Бобр Общие вопросы Javascript 8 17.09.2013 14:32
Как получить элементы тега div? begunok Общие вопросы Javascript 2 31.12.2012 13:21
Как побороть "активированный" DIV? XPyCTang Events/DOM/Window 1 21.11.2012 13:01
Как получить название композиции из Windows Mepia Plyaer alx99 Javascript под браузер 1 18.02.2011 16:21
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32