Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2011, 02:03
Аватар для zilker
Профессор
Отправить личное сообщение для zilker Посмотреть профиль Найти все сообщения от zilker
 
Регистрация: 30.07.2011
Сообщений: 189

Не видит глобальную переменную?
Здравствуйте. Решил обновить знания по 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 в сек.
Заранее спс.
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2011, 02:21
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 26.11.2011 в 02:27.
Ответить с цитированием
  #3 (permalink)  
Старый 26.11.2011, 02:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>

Последний раз редактировалось рони, 26.11.2011 в 02:33.
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2011, 02:31
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

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

Последний раз редактировалось dmitriymar, 26.11.2011 в 02:45.
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2011, 02:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

dmitriymar,
Можно только гадать не видя полный код ... ещё вариант var a создаётся раньше самого элемента
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2011, 02:45
Аватар для zilker
Профессор
Отправить личное сообщение для zilker Посмотреть профиль Найти все сообщения от zilker
 
Регистрация: 30.07.2011
Сообщений: 189

заменил на offset - все тоже Cannot read property 'style' of null.
Мне тогда, чтобы оперировать свойствами, задавать их изначально в js?
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2011, 02:47
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

рони,
в принципе да
Ответить с цитированием
  #8 (permalink)  
Старый 26.11.2011, 02:48
Аватар для zilker
Профессор
Отправить личное сообщение для zilker Посмотреть профиль Найти все сообщения от zilker
 
Регистрация: 30.07.2011
Сообщений: 189

Сообщение от рони
Можно только гадать не видя полный код ... ещё вариант var a создаётся раньше самого элемента
приведенный в начале кусок кода это начало .js файла, который подключается в html.
Ответить с цитированием
  #9 (permalink)  
Старый 26.11.2011, 02:54
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 26.11.2011 в 02:59.
Ответить с цитированием
  #10 (permalink)  
Старый 26.11.2011, 02:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

zilker,
window.onload = function() {ваш код}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить функцию при запуске увидеть ГЛОБАЛЬНУЮ переменную? возжаждавший Элементы интерфейса 8 23.02.2017 01:27
Как передать переменную с jquery в php Максим2 jQuery 14 28.07.2013 11:38
запомнить переменную js в одном файле и использовать в другом. как? skalka Общие вопросы Javascript 2 28.09.2010 08:19
код между body и body ie7 не видит alexandr_poskrobka (X)HTML/CSS 2 09.03.2010 18:35
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58