Показать сообщение отдельно
  #6 (permalink)  
Старый 25.12.2008, 16:11
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Я долго ловил эту багу. Ну не как не мог понять, почему поле ввода логина (получаемое по id) всегда пустое, причем только в IE. Оказалось есть в шапке поле ввода с именем, которое совпадает с этим id, из-за чего находилось оно, а не то, которое нужно было мне.

По поводу природы этого бага: как все знают, в MSDOM все элементы попадают в коллекции, например document.all, где они становятся доступны по своему id или имени. Например, в случае моего примера из первого поста, оба поля доступны через:
alert(document.all.username[0].id); // "notausernameatall"
alert(document.all.username[1].id); // "username"


Есть вероятность, что функция document.getElementById в IE стоит на костыле, который основан на MSDOM. Причем из коллекции берут только первый элемент, не проверяя по id ли он записан, или по имени.

Других рациональных объяснений я не вижу. Кстати подобный глюк есть с HTMLCollection.namedItem, где IE одинаково воспринимает как id, так и имя элемента.
Ответить с цитированием