Не могу прочитать свойство 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, время: 06:55. |