Локальная переменная становится глобальной?
Здравствуйте. Есть такой код:
window.onload = function () { alert(canvas); document.addEventListener("wheel", Wheel); } function Wheel (e) { var canvas = document.getElementById('canvas'); canvas.style.top = ...; canvas.addEventListener("transitionend", EL); function EL() { canvas.removeEventListener("transitionend", EL); ... } } В результате, алерт выдает объект с id="canvas". Почему? Ведь canvas определяется только внутри Wheel() как локальная переменная. Спасибо. |
Цитата:
он вам все равно выдаст это элемент. В js есть возможность работать напрямую с элементами по их ид типа <input id="test" value="5" type="text"> <script>alert(test.value)</script> |
нифига себе :blink: как это? Это в спецификации языка есть? Или браузеры сотканы из уличной магии?
|
|
Цитата:
|
Цитата:
|
Цитата:
Говорят - приватная. Кстати когда браузер компилит элементы формы по их именам эта фича же всем нравится, или как? Да, пишут что тогда если есть id, его значение должно совпадать с name, иначе, пишут, неизвестно чем кончится. И насчет id. Не надо давать им такие значения, которые бы были похожи на имена переменных и типы элементов и все такое. Например id="button_next" - неправильно id="button-next" - правильно Улавливаете? Словом id="-canvas" и никто вас не будет бить по ночам. |
111,
У Вас название локальной переменной Цитата:
Измените название локальной! |
Что ж, огромное спасибо всем за ответы. Такого я от DOM не ожидал ) Век живи - век учись, все такое.
|
Цитата:
Интересно другое, что будет если из локальности window присвоить canvas=5 ? |
Часовой пояс GMT +3, время: 14:55. |