Не видит глобальную переменную?
Здравствуйте. Решил обновить знания по js, но вот незадача. Не работает участок:
var a = document.getElementById("player"); function move () { setInterval (function () { a.style.left=a.style.left--+"px"; },1000) } Выдает - Cannot read property 'style' of null, счетчик работает (видно из файрбага хрома). Объявляю локально (внутри move) - все работает, но встает проблема - объект 'player' при первом срабатывании убегает сразу же влево, до края экрана и лишь потом смещается по 1px в сек. Заранее спс. |
поскольку положение элемента не задано с использованием js то a.style.left изначально не вычисляется.
http://javascript.ru/blog/Andrej-Par...ta-na-stranice а глобальную переменную видит a.style.left=a.offsetLeft--+"px"; |
zilker,
a.style.left это строка приведите её к числу прежде чем уменьшать dmitriymar, вариант ... стиль не задан скриптом но вычисляется ... <!DOCTYPE > <html> <head> <title></title> </head> <body> <div style="left: 10px" id="player"></div> <script> var a = document.getElementById("player"); alert(a.style.left) </script> </body> </html> |
рони,
согласен не подумал об этом(изза того, что не помню когда задавал через атрибуты значения),но если в таблице стилей задан то не увидит.но в том варианте ,что написал нет необходимости приводить и он универсален,не важно в атрибуте задан или в css var b="2px"; b--; alert(b) а у него null выдаёт -что указывает на то что в css задал |
dmitriymar,
Можно только гадать не видя полный код ... ещё вариант var a создаётся раньше самого элемента |
заменил на offset - все тоже Cannot read property 'style' of null.
Мне тогда, чтобы оперировать свойствами, задавать их изначально в js? |
рони,
в принципе да:) |
Цитата:
|
Цитата:
файл подключился в хеде и сразу выполнилось var a = document.getElementById("player"); в то время как не то что элемента "player" в body нет ,а нет ещё и самого body. |
zilker,
window.onload = function() {ваш код} |
Часовой пояс GMT +3, время: 01:26. |