
form要素内のフォーム部品の配列である document.forms[n].elements が本来持っているはずのないnodeNameやchildNodesといったプロパティを持っている。
<script type="text/javascript">
function check() {
var obj = document.forms[0].elements;
if (obj.nodeName && obj.childNodes) {
alert(obj.nodeName + '\n' + obj.childNodes.length);
} else {
alert('False.')
}
}
</script>
<form action="#" id="f1">
<div><input type="text" name="i1"></div>
<div><input type="button" value="プロパティ参照" onclick="check()"></div>
</form>
「プロパティ参照」ボタンを押すと問題のプロパティが有効であるかを判定します。有効であればノード名と子ノードの数を、そうでなければ「False.」の文字列をアラートで出力します。
| UA | アラートの内容 |
|---|---|
| Moz1.0 | False. |
| WinIE6.0 | FORM 2 |
このバグの原因は、documents.forms[n] と document.forms[n].elements が同じオブジェクトを参照しているためと考えられます。
WinIE6.0でも同様の現象が発生します。