За последние 24 часа нас посетили 20662 программиста и 1008 роботов. Сейчас ищут 462 программиста ...

Можно ли определить является ли элемент блочным?

Тема в разделе "JavaScript и AJAX", создана пользователем Hight, 20 июл 2011.

Статус темы:
Закрыта.
  1. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Собственно сабж. Есть ли возможность определить является элемент блочным или строковым? Гугл молчит. Мой мозг говорит, что возможности такой нет, а ваш, господа? =)
     
  2. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    [js]<span id="span"></span>
    <div id="div"></div>
    <script>
    function getStyle(el,styleProp)
    {
    if (el.currentStyle)
    var y = el.currentStyle[styleProp];
    else if (window.getComputedStyle)
    var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
    return y;
    }

    var span = document.getElementById('span')
    var div = document.getElementById('div')

    document.write('<p>span - ' + getStyle(span, 'display') + '</p>')
    document.write('<p>div - ' + getStyle(div, 'display') + '</p>')
    </script>
    [/js]
     
  3. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Круто. Спасибо.
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Чтото вы намудрили.

    function checkElement(obj)
    {
    var element = obj.tagName.toLowerCase();
    if(element == 'div') alert('Блочный элемент');
    else alert('Не блочный элемент');
    }
    </script>
    <div onClick="checkElement(this);">ddd</div>

    добавь проверку на спан или <p> если нужно
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Апельсин
    а если он стал блочным вопреки своей природе? Жизнь такая штука... Любого заблочить может...

    Hight
    блочный или не блочный браузер определяет через свойство display. Не важно, задано оно где-то или нет, оно все равно будет, и будет содержать ответ на вопрос.
     
  6. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Апельсин
    Код (Text):
    1. а если он стал блочным вопреки своей природе? Жизнь такая штука...
     
  8. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    к сожалению, функцию на проверку говнокодера трудно написать :)
    есть блочные элементы, есть не блочные. Зачем придумывать велик, когда можно красиво сделать "по мануалу".
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Апельсин
    ну ты не прав. css имеет свойство. и им можно пользоваться. это не говнокод.
     
  10. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    igordata
    printf'ом тоже можно выводить инфу, но почему-то юзают echo/print. Это из той же оперы :)
     
  11. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Апельсин
    бывает, что и div нужно как table-ceil зафигачить
     
  12. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    tommyangelo
    igordata
    Апельсин все еще сопротивляется :D


    А что же будет в таком случае: <hr style="display: block" id="hr">. Тоже блочный? Выходит, что да. Тогда смысл этого вашего велика? [​IMG]
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Апельсин
    с li и с a можно проделывать всякое

    плюс к тому можно с дивам делать инлайн и инлайн-блок.

    трололомод:
    сдается мне ты просто не умеешь этим пользоваться :D
     
  14. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    я знаю, что это и для чего используют, но предпочитаю обходиться стандартными средствами.
    Если уж делать заморочки и заумные проверки, тогда учитывать все ньюансы, то есть чтобы ситуация чуть выше не прокатывала. А иначе это все усложнение - бесполезно.
     
  15. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    я делал для любого, а у вас проверка если див - то блочный - если не див - то не блочный.
    Вы думаете только див по умолчанию блочный? Вы ошибаетесь.
     
  16. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    А вы думаете любой элемент со свойством display:block гарантированно блочный? Вы ошибаетесь.
     
  17. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    гарантированно
     
  18. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    не важно как он описан в спецификации, важно то, какое у него свойство в момент отображения.

    и если это <span style="display:block">
    то в браузере он отображен как блочный
     
  19. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
     
  20. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    http://www.w3.org/TR/html401/sgml/dtd.html
    вот тут нужно смотреть спецификацию а не на левом сайте :)
     
  21. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    естественно блочный и браузер его отобразит как блочный)
     
  22. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Ваше дело. Уговаривать не собираюсь.
     
  23. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Уговаривать на счёт чего? Я не понимаю что вы хотите сказать этим. Если нужно определить блочное ли отображение или нет у элемента при чём тут вообще какой элемент по умолчанию? его может менять и css и js и то что он когда то был блочным а сейчас нет, и отображается не как блочный - это и определяется.
    и при чём тут вообще тег hr? зачем ему писать стиль блочный если он и так по определению блочный :)
     
  24. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    <br> тоже блочный, ага.
    потому, что эта "проверка" проверяет свойство, которое можно впихнуть в произвольные теги, которые эта самая проверка должна отсекать.
     
  25. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    hr без проблем
    HTML:
    1. hr {display: block; background-color: red;}
    2. <hr>
    работает
    br браузер сам отсекает, ну и что, можете фильтровать, в любом случае ваша проверка тут не поможет :)
    но если задача сделать какой то скрипт в котором нужно определять в текущей момент див блочный или нет, то при чём тут будет br?
    будет задача отсекать br я думаю автор топика сам сможет добавить такую проверку :)
     
Статус темы:
Закрыта.