За последние 24 часа нас посетили 38352 программиста и 1722 робота. Сейчас ищет 651 программист ...

Помогите с DOM

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

  1. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Недавно открыл для себя эту чудесную вещь и теперь хочу сделать следующее.
    Есть два блока, один длинее второго, написал функцию:

    [js]
    function alignment() {
    var abs;
    abs = document.getElementById(\'left\').style.height;
    document.getElementById(\'maket\').style.height = abs;
    }
    [/js]

    abs не изменяется, да и не должен наверное. Подскажите как будет работать? :)
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    слеши тут зачем?
     
  3. fan

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

    С нами с:
    7 сен 2010
    Сообщения:
    14
    Симпатии:
    0
    igordata
    мне твой вопрос больше понравился, поэтому отвечу на него: а хрен его знает! ты у афтора спроси, может он знает?
    P.S.
    может новинка какая...
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не ну я думал, вдруг я че не знаю...
     
  5. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Затем чтобы блок изменял свою длинну.

    Почему document.getElementById(\'left\').style.height не имеет значения? Его надо как-то проинициализировать или его нельзя получить таким вызовом?
     
  6. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Кавычки одинарные использую для echo ''; потому что)
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    понял тебя теперь я вот

    знаю об этом нихрена сожалению кЪ

    почему б не заюзать жукувьеревское .css?
     
  8. fan

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

    С нами с:
    7 сен 2010
    Сообщения:
    14
    Симпатии:
    0
    слеши убери!!!
    document.getElementById(\'left\').style.height
    лучше не использовать в качестве ИД названия тегов, атрибутов.

    твой код должен работать, ошибок не видно, кроме слешей.


    судя по цитате, вот ещё какая пакость может тебя ждать.
    document.getElementById("left").style.height
    вернёт тебе высоту, только тогда, когда ты эту высоту пропишешь в стилях элемента с ИД "ltft"
    во всех остальных случаях получишь пустую строку.
     
  9. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    fan
    Ты не только слепой, оказывается.
     
  10. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Пробовал прописывать длинну в таблице стилей, всё равно возвращает пустое значение.

    Если пишу document.getElementById("left").style.height = "300px" то присваивает и потом печатает что 300 мол.

    Не делаю через css так как гибкости не хватит и плюс хочу изучить DOM.
     
  11. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    это javascript. Лучше воспользуйся jQuery - проще, быстрее, нагляднее + кроссбраузерно
     
  12. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    На википедии написано что DOM, я так понимаю JS используют что интерфейса с DOM не там?

    Тем не менее, я хочу разобраться почему правильный код не хочет работать "as well".
     
  13. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    javascript - это не то, что можно назвать правильным кодом. разные браузеры - разные подходы.
    тут, к примеру, ты хочешь получить высоту. один браузер может дать тебе ту, высоту что ты задал, другой же может дать высоту, которая получилась в итоге, а третий - вообще ничего не дать.

    javascript - самый трудно-отлаживаемый язык. необходимо учитывать, что javascript не использует знак доллара для обозначения переменных, и потому многие слова, которые можно использовать для переменных, используются браузерами для своих нужд. т.е. то, что работает на одном браузере, не обязательно будет работать на другом, и при этом ты не получишь никаких сообщений об ошибках.

    в отличие от других языков программирования, javascript использует совершенно другой подход при выполнении кода - код на javascript запускаемый из разных функций последовательно, вполне вероятно может выполняться параллельно. тут очень-очень много нюансов, недаром кроссбраузерность - это головная боль верстальщиков и тех, кто пишет javascript-код.

    НО! тут появляется jQuery который предлагает удобный, кроссбраузерный способ работы с документом на javascript для большинства операций. Баги в нём тоже есть, но их вполне можно обходить небольшими хаками.
     
  14. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Бред.
    Бред.

    У по многому остальному - бред.
    JavaScript во всех браузерах ОДИНАКОВЫЙ, потому что все браузеры реализуют стандарты ecmaScript.
    А вот то, что этот скрипт оперирует объектами, предоставляемыми браузерами, это уже совсем другой разговор. Не пудри маленький мозг посетителя и не заблуждайся сам.
     
  15. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Так какого **** тогда не работают 3 строки???
     
  16. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    unmanner
    Да потому что не задал ты свойство height тому блоку, который берешь за образешь.
    style оперирует свойством из CSS, откуда он её возьмет, если ты его не задал ёпт? Из песты?
     
  17. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Задал в css результат такой же.
     
  18. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    скажи это пользователям ишака, которые могут обращаться к объектам дом структуры через document.all, а также другие фишки, доступные в разных браузерах по разному.

    угу, большинство баз данных тоже реализуют стандарты SQL синтаксиса. стандарты - это хорошо. вот только внедряются довольно долго, и не всегда соответствуют нуждам пользователя.
    например REPLACE, ON DUPLICATE KEY UPDATE не являются стандартом, однако это оооочень удобные штуки в мускуле, а выборка последнего вставленного айди вообще реализуется у разных баз данных по разному,
    как и, казалось бы, стандартная таблица information_schema - у разных баз данных разная.
    так и с javascript у браузеров. простые скрипты будут работать одинаково - это да. а вот что сложнее - уже не факт, что в коде ты не используешь какую-либо фишку, которая не входит в стандарт, поддерживаемый всеми браузерами.


    нифига. сталкивался с тем, что рабочий в одном браузере, скрипт не работал в другом. при этом я создавал собственный объект, и назначал ему методы и свойства, а в другом браузере данные методы/свойства на моём (!) же объекте перетирались браузером, потому что видите ли я использовал свойства/методы с названиями, зарезервированные за свойствами/методами ДОМ элементов, которые никаким боком к моему объекту не имеют отношения, т.к. мой объект - это грубо говоря массив свойств и функций, неймспейс.

    это не бред, а то с чем я столкнулся. когда сидишь часами и не можешь понять почему какая-то фишка перестала работать. ведь правил-то совсем другое место!

    например, ишак некорректно работает с установкой значений для селектбоксов с помощью jquery - простая инструкция $('select[name=id]').val('10'); поставленная до формирования зависимого селекта с помощью цикла, не сработает. в итоге приходится извращаться. и это при том, что jquery писали профи, и он кроссбраузерный.
     
  19. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    unmanner
    воспользуйся jquery и возрадуйся жизни, а то из мухи слона делаешь.
     
  20. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    unmanner
    Ну что я неправильно делаю, почему у меня работает?

    HTML:
    1. <script type="text/javascript">
    2.  
    3. window.onload = function() {
    4.     document.getElementById('equal').onclick = function(e) {
    5.         document.getElementById('first').style.width = document.getElementById('second').style.width;
    6.     }
    7. }
    8.  
    9.  
    10. <div id="first" style="background: #F96; width: 200px;">
    11.  #first layer
    12. </div>
    13. <div id="second" style="background: #FF6; width: 420px">
    14.  #first layer
    15. </div>
    16.  
    17. <input type="button" id="equal" value="Make them equal" />
    18.  
    19. </body>
    20.  
     
  21. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    наверно используешь width вместо height :)
     
  22. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ага :D
    В IE высота элемента указывается через свойство width =)))
     
  23. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Приду домой проверю у себя :)
     
  24. unmanner

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

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Да, вроде работает спс) только хз почему раньше не работало)
     
  25. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Gromo
    Чел, когда я пришел на встречу с клиентом с готовым заказом на JavaScript, где всё было красиво, с кучей эффектов, слайдов и всего прочего и увидел на его ноутбуке совсем не то, что я делал - а именно рваный скролл, вместо фэйда просто мелькание или пропадание, когда абсолютно позиционированная картинка слетала фиг поймешь куда - вот это страшно =)
    И проблема была не в том, что я не проверял во всех браузерах. Проблема была в том, что я не проверил в его версии браузера с его плагинами.