Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   document.getElementById return undefined (https://javascript.ru/forum/events/48327-document-getelementbyid-return-undefined.html)

HardR0ck 29.06.2014 17:56

document.getElementById return undefined
 
Добрый день, только начал курить джаваскрипт.

var left = document.getElementById('sq').style.left; // return Undefined

<div id="sq" class="square"></div>


Помогите плиз

Sweet 29.06.2014 18:09

document.getElementById возвращает либо элемент, либо null. И никогда undefined. Такие дела.
Возможно проблема в следующем:
<script>
alert( document.getElementById('sq') ); // такого элемента в документе ещё нет
</script>

<div id="sq" class="square"></div>

<script>
alert( document.getElementById('sq') ); // элемент в документе: получите-распишитесь
</script>

Sweet 29.06.2014 18:54

Свойство .style содержит стили из атрибута style. И не имеет никакого отношения к стилям, прилетевшим через класс или ещё как. И, кстати, непонятно, откуда взялся undefined:
<div id="sq" class="square"></div>
<script>
alert( typeof document.getElementById('sq').style.left );
</script>

В любом случае, RTFM!

Aetae 29.06.2014 19:11

Sweet, cкорее всего проблема в другом.
HardR0ck, element.style - содержит только то, что есть в атрибуте style этого элемента. Если же left задан в css, то получить его можно либо перебрав саму css, либо получив вычисленное браузером значение:
var elem = document.getElementById('sq');
var left = (window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle).left;

foo 29.06.2014 21:09

Цитата:

Сообщение от Sweet
document.getElementById возвращает либо элемент, либо null. И никогда undefined. Такие дела.

А при чем тут document.getElementById, если речь о var left = document.getElementById('sq').style.left? Это что то из разряда в огороде бузина а в Киеве дядька?

Aetae 29.06.2014 21:29

foo, вопрос - откуда undefined?
document.getElementById('sq') - никогда не undefined
document.getElementById('sq').style - никогда не undefined
document.getElementById('sq').style.left - никогда не undefined

Sweet 29.06.2014 21:30

Цитата:

Сообщение от foo
А при чем тут document.getElementById

Тема называется "document.getElementById return undefined".

bes 29.06.2014 21:55

Цитата:

Сообщение от Sweet
И, кстати, непонятно, откуда взялся undefined:

ну только отсюда наверное :)
<div id="sq" class="square"></div>
<script>
alert(left);//undefined
var left = document.getElementById('sq').style.left; 
</script>

foo 29.06.2014 22:10

Цитата:

Сообщение от Aetae
откуда undefined?

Да, я понял, это типа шутка была. Там, вообще-то пустая строка возвращается в его случае. А почему undefined у него с большой буквы? Это тс ошибся, или в этом есть тайный смысл?

bes 29.06.2014 22:13

Цитата:

Сообщение от foo
Это тс ошибся, или в этом есть тайный смысл?

есть - комментарии не обрабатываются интерпретатором, что хочу, то и пишу


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