Я долго ловил эту багу. Ну не как не мог понять, почему поле ввода логина (получаемое по 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, так и имя элемента.