Не могу прочитать свойство left, объявленное в <style>
Здравствуйте.
Подскажите, почему я не могу получить доступ в свойству left, если оно обявлено внутри тэга style в заголовке страницы или во внешнем css файле, а если объявляю внутри тэга в аттрибуте style, то доступно это свойство <html> <head> <title>Test</title> <STYLE TYPE="text/css"> H1{position:relative; left:-1000px} </STYLE> <script> function slideIn(){ var el = document.all.tip; alert(el.style.left); if(-1000 == el.style.pixelLeft){ el.style.fontStyle = "italic"; el.style.pixelLeft = document.body.offsetWidth; } if(20 <= el.style.pixelLeft){ el.style.pixelLeft -=20; setTimeout("slideIn()",50); } else{ el.style.pixelLeft = 0; el.style.fontStyle = ""; } } </script> </head> <body onload="slideIn()"> <H1 ID="tip"> Tip of the week</H1> <P>Animating text from off screen </body> </html> В этом файле позиционирование и смещение применяется, но при выводе alert, оно выводится пустым и поэтому не работает скрипт. А если объявляю так, то alert выводит сообщение со значением left и скрипт работает: <html> <head> <title>Test</title> <STYLE TYPE="text/css"> H1{position:relative} </STYLE> <script> function slideIn(){ var el = document.all.tip; alert(el.style.left); if(-1000 == el.style.pixelLeft){ el.style.fontStyle = "italic"; el.style.pixelLeft = document.body.offsetWidth; } if(20 <= el.style.pixelLeft){ el.style.pixelLeft -=20; setTimeout("slideIn()",50); } else{ el.style.pixelLeft = 0; el.style.fontStyle = ""; } } </script> </head> <body onload="slideIn()"> <H1 ID="tip" style="left:-1000px"> Tip of the week</H1> <P>Animating text from off screen </body> </html> Попробовал во всех популярных браузерах. Не могу понять в чём причина. Подскажите почему так происходит. Спасибо :) |
1. Используйте position:absolute
2. document.all - устаревшая форма записи 3. не указаны единицы измерения 4. говнокод взятый из сомнительных источников не может работать корректно! |
тут мне больше интересует не сам код, а почему нельзя прочитать позиционирование left, если он объявлен в тэге <style> или css-файле(это кстати по идее относится и к другим свойствам)
НО, эти свойства применяются(!) и почему они читаются если объявлены inline(внутри тэгов в аттрибуте style). Вот это я хотел бы понять. |
Цитата:
Цитата:
<style type="text/css"> div { background: blue; position: absolute; color: white; text-align: center; width: 100px; height: 100px; } </style> <script type="text/javascript"> window.onload = function(){ var i = 0; (function(){ if(++i <= 300){ var element = document.getElementsByTagName('div')[0]; element.style.left= i+'px'; element.innerHTML = parseInt(i/3)+'%'; setTimeout(arguments.callee, 10); } })(); }; </script> <div></div> |
|
Цитата:
дело не в единицах измерения(пробовал и с ними и без), и твой пример не отвечает на мой вопрос, и он не работает к тому же: Сведения об ошибке на веб-странице Агент пользователя: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E) штамп времени: Sun, 14 Nov 2010 20:27:02 UTC Сообщение: 'style' - есть null или не является объектом Строка: 32 Символ: 8 Код: 0 |
Цитата:
На кнопку просматреть пробовал нажать? |
Цитата:
а такой вопрос: интересно, раньше тот пример работал, если его опубликовали? раньше были доступны значения стиля без этих методов(currentStyle или getComputedStyle)? |
Цитата:
UPD Так вот это я к тому, что все свойства по умолчанию - пустая строка. И если просто обратиться element.style.left, то получите "" (пустую строку) |
Часовой пояс GMT +3, время: 04:33. |