Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2010, 06:41
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 153

Одноименные переменные и атрибуты id/name
Цитата:
var id = document.getElementById('id');

In Internet Explorer, names and IDs are global variables and thus you should NEVER use a global variable or function name which is the same as an HTML element name or ID.
You should also avoid giving names or id's to your variables/functions/arguments/forms words which are JavaScript methods/properties/attributes such as 'name' or 'id' or 'value' or 'test' or 'text' or 'checked' or 'go' or 'submit' or 'replace' or 'button' or 'radio' or 'parseInt'.
.
Во втором предложении автор, вроде бы отчасти прав, но в целом -- слабое утверждение и неподтвержденные фразы. Не хватает сильной аргументации -- как подтвердить, так и опровергнуть. Существует ли развернутое описание -- что можно использовать и что нельзя использовать в качестве имен переменных кроме запрета на зарезервированные слова?
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2010, 08:42
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,488

Просто все эти указанные элементы конкурируют в одном пространстве имен - как свойства у объекта window
Ответить с цитированием
  #3 (permalink)  
Старый 19.10.2010, 10:22
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 153

Хммм... Вышеприведенный код работает как минимум в МСИЕ 6+. ФФ ипредупреждает:
Цитата:
Элемент доступен по идентификатору/имени в глобальной области видимости. Используйте вместо этого соответствующий стандарту W3C метод document.getElementById().
Хромиум вроде бы молчит, Оперу не пробовал - не знаю.

Есть достоверные сведения о реальном конфликте имен?
Ответить с цитированием
  #4 (permalink)  
Старый 19.10.2010, 12:09
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,488

Цитата:
Вышеприведенный код работает
Это какой? Этот что ли:
var id = document.getElementById('id');

ну так он не показателен, тому же иду присвоился тот же объект. Плюс вызов то надеюсь вне функций.
Ответить с цитированием
  #5 (permalink)  
Старый 19.10.2010, 12:55
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 153

Сообщение от micscr
указанные элементы конкурируют в одном пространстве имен
Сообщение от micscr
тому же иду присвоился тот же объект. Плюс вызов то надеюсь вне функций
Ну и где тут "конкуренция"? Не имеет значения вне или внутри функции вызван данный код.

<div id="id">My name is 'id'</div>
<script type="text/javascript">
(function()
{
var id = document.getElementById('id').innerHTML
alert('Indoor: ' + id);
})();

var id = document.getElementById('id').innerHTML
alert('Outdoor: ' + id);
</script>


Понимаете, я не хочу оспаривать Ваше утверждение или утверждение автора процитированных строк. Вы утверждаете о конкуренции в одном пространстве имен, автор цитаты - более категоричен: should NEVER use. Аргументов ни за, ни против использования переменных, одноименных id/name элементов, нет.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
iframe не выносит переменные nemo Серверные языки и технологии 0 23.01.2010 14:25
jQuery & атрибуты & валидатор micscr jQuery 7 29.12.2009 13:37
переменные и ссылки на переменные scuter Общие вопросы Javascript 6 31.08.2008 01:24