Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не видит глобальную переменную? (https://javascript.ru/forum/misc/23505-ne-vidit-globalnuyu-peremennuyu.html)

zilker 26.11.2011 02:03

Не видит глобальную переменную?
 
Здравствуйте. Решил обновить знания по 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 в сек.
Заранее спс.

dmitriymar 26.11.2011 02:21

поскольку положение элемента не задано с использованием js то a.style.left изначально не вычисляется.
http://javascript.ru/blog/Andrej-Par...ta-na-stranice
а глобальную переменную видит
a.style.left=a.offsetLeft--+"px";

рони 26.11.2011 02:28

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>

dmitriymar 26.11.2011 02:31

рони,
согласен не подумал об этом(изза того, что не помню когда задавал через атрибуты значения),но если в таблице стилей задан то не увидит.но в том варианте ,что написал нет необходимости приводить и он универсален,не важно в атрибуте задан или в css
var b="2px";
b--;
alert(b)

а у него null выдаёт -что указывает на то что в css задал

рони 26.11.2011 02:44

dmitriymar,
Можно только гадать не видя полный код ... ещё вариант var a создаётся раньше самого элемента

zilker 26.11.2011 02:45

заменил на offset - все тоже Cannot read property 'style' of null.
Мне тогда, чтобы оперировать свойствами, задавать их изначально в js?

dmitriymar 26.11.2011 02:47

рони,
в принципе да:)

zilker 26.11.2011 02:48

Цитата:

Сообщение от рони
Можно только гадать не видя полный код ... ещё вариант var a создаётся раньше самого элемента

приведенный в начале кусок кода это начало .js файла, который подключается в html.

dmitriymar 26.11.2011 02:54

Цитата:

Сообщение от zilker
.js файла, который подключается в html.

читай пост рони,выше по поводу var-так оно и есть.
файл подключился в хеде и сразу выполнилось var a = document.getElementById("player");
в то время как не то что элемента "player" в body нет ,а нет ещё и самого body.

рони 26.11.2011 02:56

zilker,
window.onload = function() {ваш код}


Часовой пояс GMT +3, время: 15:24.