発見したのは半年くらい前ですが、現在の最新バージョンFireFox 47.0 でも発生します。
HTMLFormElement.elementsはフォーム配下のコントロールにname属性、id属性のどちらからでもアクセスできるコレクションです。
しかし、id属性とname属性が同じ値だった場合に限り、id属性を削除するとname属性でのアクセスも出来なくなってしまいます。
<!DOCTYPE html>
<html>
<head>
<script>
var elem = document.getElementById("text1");
elem.removeAttribute("id");
elem = document.forms[0].elements["text1"];
alert(elem); // undefined (IE、chromeでは取得出来る)
</script>
</head>
<body>
<form>
<input type='text' name='text1' id='text1' />
</form>
</body>
</html>
ちなみに以下の手順を踏むとidを削除してもelementsからnameで取得出来るようになりました。
- id属性を別の値に変更する。
- name属性を別の値に変更した後元に戻す。
- id属性を削除する。