document.getElementById return undefined
Добрый день, только начал курить джаваскрипт.
var left = document.getElementById('sq').style.left; // return Undefined <div id="sq" class="square"></div> Помогите плиз |
document.getElementById возвращает либо элемент, либо null. И никогда undefined. Такие дела.
Возможно проблема в следующем: <script> alert( document.getElementById('sq') ); // такого элемента в документе ещё нет </script> <div id="sq" class="square"></div> <script> alert( document.getElementById('sq') ); // элемент в документе: получите-распишитесь </script> |
Свойство .style содержит стили из атрибута style. И не имеет никакого отношения к стилям, прилетевшим через класс или ещё как. И, кстати, непонятно, откуда взялся undefined:
<div id="sq" class="square"></div> <script> alert( typeof document.getElementById('sq').style.left ); </script> В любом случае, RTFM! |
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, вопрос - откуда undefined?
document.getElementById('sq') - никогда не undefined document.getElementById('sq').style - никогда не undefined document.getElementById('sq').style.left - никогда не undefined |
Цитата:
|
Цитата:
<div id="sq" class="square"></div> <script> alert(left);//undefined var left = document.getElementById('sq').style.left; </script> |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
foo = "bar"; var foo; alert(foo); , чтобы подчеркнуть свой богатый внутренний мир. Ну а чё! Я вот не понимаю людей, которые объявляют переменные в начале функции. И в знак протеста, я буду объявлять переменные внизу функций!!! |
Sweet,
Вы там написали совершенно другое. Вы аллертите необявленное и неприсвоенное. Это ошибка. |
Цитата:
value = alert(left); var left; alert( 'Небыло никакой ошибки, alert(left) в свою очередь вернула: ' + value ); Хотя бы проверяйте свои домыслы прежде чем утверждать. |
Цитата:
foo="bar" var foo delete foo console.log(global.foo)// undefined console.log(foo)// bar |
Цитата:
|
foo, еслиб вы почитали учебник на этом сайте и вы бы знали почему.
|
Цитата:
|
Цитата:
Function(/*arguments*/, moduleText)(/*arguments*/); , где /*arguments*/ - не помню точно какие аргументы (помню module, __dirname и ещё какие-то). Т.е. foo="bar" // присваиваем значение переменной var foo // объявляем переменную delete foo // пытаемся удалять переменную - false console.log(global.foo)// это не имеет никакого отношения к переменной console.log(foo)// bar - ибо почему бы и нет =) |
Sweet,
Я думаю, не совсем так. foo="bar" // объявляем свойство глобального объекта var foo // объявляем переменную, в которую копируется значение свойства глобального объекта delete foo // пытаемся удалять переменную - false, и вместе с этим удаляется св-во в глобале console.log(global.foo)// это не имеет никакого отношения к переменной, и кроме того, мы это свойство удалили console.log(foo)// bar - ибо почему бы и нет = так оно и должно быть. |
Цитата:
А по вопросу: объявления var происходят в начале функции независимо от того где они указанны в коде. Т.е. alert(a); var a = 123;это на самом деле var a; alert(a); a = 123; Соответственно и в васшем примере: foo="bar" // foo уже локально ибо ниже объявлена через var var foo //объявляем переменную delete foo //удаление несуществующего console.log(global.foo) //undefined(было таким и до delete) console.log(foo) //bar |
Цитата:
global.foo = "value"; А затем в другом: console.log(foo); // undefined - это значение переменной foo="bar" // присваеваем переменной var foo // объявляем переменную delete foo // пытаемся удалять переменную - false console.log(global.foo)// value, потому что глобальное свойство мы не трогали console.log(foo)// bar |
Цитата:
|
*facepalm.jpg*
|
Цитата:
А что касаемо реально происходящего, см выше. |
Цитата:
global.a=eval("1") var a a//undefined |
Цитата:
console.log(arguments);И прозрей: в ноде весь код оборачивается в функцию! Там нет кода, исполняющего в глобальном окружении. Всё остальное - это просто бредни человека, который толком ничего не знает и не имеет опыта, но бредит какой-то хренотенью, типа "я самый умный, я понял, что var в глобале не нужен". Но Цитата:
|
Цитата:
var global = window; var program = 'global.a=eval("1");\ var a;\ alert(a); //undefined'; Function("exports, module, __filename, __dirname", program)(/*arguments*/); |
Цитата:
a=1 console.log(a) И что ты вообще называешь глобальным окружением? То глобальное (с var) что внутри модуля -- есть глобальное для этого модуля, как, впрочем и для функции. Ты не понимаешь, что такое глобальное окружение. Есть глобальный объект и есть глобальное окружение, в JS это не одно и тоже. |
Цитата:
Цитата:
|
Цитата:
|
foo, вот только не нужно рассказывать мне своё представление о том, как всё работает. Я без тебя уже много лет знаю, как работает интерпритатор js.
|
foo, и, кстати, ты все разговоры сводишь к глобальному окружению и var. Видимо, потому что внезапное "озарение" про var - это единственное, чем ты в этой жизни можешь похвастаться:haha:
Кстати, весь этот флейм вышел отсюда: Цитата:
x = "foo"; new function () { alert(x); x = "Засунь своё любимое глобальное окружение себе в..."; alert(x); var x; }; |
Цитата:
a=arguments[0].__proto__ b=(function(){return arguments.__proto__})() console.log(a===b)// true А ты мне скажи, какая нахрен разница, что это? Какое это имеет отношение к вопросу? |
Цитата:
Object.prototype === Object.prototype??? Цитата:
Цитата:
|
Sweet,
Что-то удивительное я должен найти в этом куске? Впечатлиться как-то? |
Цитата:
console.log({one: 1}) Это тоже доказывает? |
Цитата:
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 13:18. |