Недавно открыл для себя эту чудесную вещь и теперь хочу сделать следующее. Есть два блока, один длинее второго, написал функцию: [js] function alignment() { var abs; abs = document.getElementById(\'left\').style.height; document.getElementById(\'maket\').style.height = abs; } [/js] abs не изменяется, да и не должен наверное. Подскажите как будет работать?
igordata мне твой вопрос больше понравился, поэтому отвечу на него: а хрен его знает! ты у афтора спроси, может он знает? P.S. может новинка какая...
Затем чтобы блок изменял свою длинну. Почему document.getElementById(\'left\').style.height не имеет значения? Его надо как-то проинициализировать или его нельзя получить таким вызовом?
слеши убери!!! document.getElementById(\'left\').style.height лучше не использовать в качестве ИД названия тегов, атрибутов. твой код должен работать, ошибок не видно, кроме слешей. судя по цитате, вот ещё какая пакость может тебя ждать. document.getElementById("left").style.height вернёт тебе высоту, только тогда, когда ты эту высоту пропишешь в стилях элемента с ИД "ltft" во всех остальных случаях получишь пустую строку.
Пробовал прописывать длинну в таблице стилей, всё равно возвращает пустое значение. Если пишу document.getElementById("left").style.height = "300px" то присваивает и потом печатает что 300 мол. Не делаю через css так как гибкости не хватит и плюс хочу изучить DOM.
На википедии написано что DOM, я так понимаю JS используют что интерфейса с DOM не там? Тем не менее, я хочу разобраться почему правильный код не хочет работать "as well".
javascript - это не то, что можно назвать правильным кодом. разные браузеры - разные подходы. тут, к примеру, ты хочешь получить высоту. один браузер может дать тебе ту, высоту что ты задал, другой же может дать высоту, которая получилась в итоге, а третий - вообще ничего не дать. javascript - самый трудно-отлаживаемый язык. необходимо учитывать, что javascript не использует знак доллара для обозначения переменных, и потому многие слова, которые можно использовать для переменных, используются браузерами для своих нужд. т.е. то, что работает на одном браузере, не обязательно будет работать на другом, и при этом ты не получишь никаких сообщений об ошибках. в отличие от других языков программирования, javascript использует совершенно другой подход при выполнении кода - код на javascript запускаемый из разных функций последовательно, вполне вероятно может выполняться параллельно. тут очень-очень много нюансов, недаром кроссбраузерность - это головная боль верстальщиков и тех, кто пишет javascript-код. НО! тут появляется jQuery который предлагает удобный, кроссбраузерный способ работы с документом на javascript для большинства операций. Баги в нём тоже есть, но их вполне можно обходить небольшими хаками.
Бред. Бред. У по многому остальному - бред. JavaScript во всех браузерах ОДИНАКОВЫЙ, потому что все браузеры реализуют стандарты ecmaScript. А вот то, что этот скрипт оперирует объектами, предоставляемыми браузерами, это уже совсем другой разговор. Не пудри маленький мозг посетителя и не заблуждайся сам.
unmanner Да потому что не задал ты свойство height тому блоку, который берешь за образешь. style оперирует свойством из CSS, откуда он её возьмет, если ты его не задал ёпт? Из песты?
скажи это пользователям ишака, которые могут обращаться к объектам дом структуры через document.all, а также другие фишки, доступные в разных браузерах по разному. угу, большинство баз данных тоже реализуют стандарты SQL синтаксиса. стандарты - это хорошо. вот только внедряются довольно долго, и не всегда соответствуют нуждам пользователя. например REPLACE, ON DUPLICATE KEY UPDATE не являются стандартом, однако это оооочень удобные штуки в мускуле, а выборка последнего вставленного айди вообще реализуется у разных баз данных по разному, как и, казалось бы, стандартная таблица information_schema - у разных баз данных разная. так и с javascript у браузеров. простые скрипты будут работать одинаково - это да. а вот что сложнее - уже не факт, что в коде ты не используешь какую-либо фишку, которая не входит в стандарт, поддерживаемый всеми браузерами. нифига. сталкивался с тем, что рабочий в одном браузере, скрипт не работал в другом. при этом я создавал собственный объект, и назначал ему методы и свойства, а в другом браузере данные методы/свойства на моём (!) же объекте перетирались браузером, потому что видите ли я использовал свойства/методы с названиями, зарезервированные за свойствами/методами ДОМ элементов, которые никаким боком к моему объекту не имеют отношения, т.к. мой объект - это грубо говоря массив свойств и функций, неймспейс. это не бред, а то с чем я столкнулся. когда сидишь часами и не можешь понять почему какая-то фишка перестала работать. ведь правил-то совсем другое место! например, ишак некорректно работает с установкой значений для селектбоксов с помощью jquery - простая инструкция $('select[name=id]').val('10'); поставленная до формирования зависимого селекта с помощью цикла, не сработает. в итоге приходится извращаться. и это при том, что jquery писали профи, и он кроссбраузерный.
unmanner Ну что я неправильно делаю, почему у меня работает? HTML: <script type="text/javascript"> window.onload = function() { document.getElementById('equal').onclick = function(e) { document.getElementById('first').style.width = document.getElementById('second').style.width; } } </script> <body> <div id="first" style="background: #F96; width: 200px;"> #first layer </div> <div id="second" style="background: #FF6; width: 420px"> #first layer </div> <input type="button" id="equal" value="Make them equal" /> </body>
Gromo Чел, когда я пришел на встречу с клиентом с готовым заказом на JavaScript, где всё было красиво, с кучей эффектов, слайдов и всего прочего и увидел на его ноутбуке совсем не то, что я делал - а именно рваный скролл, вместо фэйда просто мелькание или пропадание, когда абсолютно позиционированная картинка слетала фиг поймешь куда - вот это страшно =) И проблема была не в том, что я не проверял во всех браузерах. Проблема была в том, что я не проверил в его версии браузера с его плагинами.