[javascript] DOMLevel0とは?

A. ブラウザ上で動くJavaScriptでは、HTMLの要素にアクセスし
データの取得や変更を行いたい事があります。

現在のブラウザでは、HTMLを解析しDOMという形でアクセスを行う事ができます。
しかしDOMが実装される前にも独自の方法でHTMLの要素にアクセスが行えました。
この昔からのアクセス方法はDOM以前の方式という意味から
レガシーDOMまたはDOMLevel0という呼び方で呼ばれています。

DOMではHTMLの要素すべてがアクセスできるのに対して、
レガシーDOMではアクセスできる要素が限られています、

フォーム要素、img要素、リンク要素などにアクセス可能です。
レガシーDOMは、現在でもフォーム要素のバリデーションの為に
利用されている場合もあるので確認して起きましょう。

ブラウザのオブジェクト
js_domlevel0_1.png

ここで実際フォームの要素にアクセスの方法を確認します。
レガシーDOMを利用する場合フォーム要素のname属性を使い名前をつける事が重要です。
この名前を利用し、要素へのアクセスを行います。
1. document.forms["フォーム名"].elements["要素名"]
2. document.forms[インデックス番号].elements[インデックス番号]
3. document.フォーム名.要素名
4. document.['フォーム名'].['要素名']
ここでinputフォームにアクセスを確認してみます。
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <script type="text/javascript">
  function confirm() {
    //  document.forms["フォーム名"].elements["要素名"]
    var nick = document.forms["userform"].elements["nickname"].value;

    // document.forms[インデックス番号].elements[インデックス番号]
    var nick2 = document.forms[0].elements[0].value;

    // document.フォーム名.要素名
    var nick3 = document.userform.nickname.value;

    // document.['フォーム名'].['要素名']
    var nick4 = document['userform']['nickname'].value;

    console.dir(nick);
    console.dir(nick2);
    console.dir(nick3);
    console.dir(nick4);
    return false;
  }
  </script>
</head>
<body>
<form action="./" method="get" name="userform" id="userform" onsubmit="return confirm();">
   <label>ニックネーム: <input type="text" name="nickname" id="nickname"></label>
  <input type="submit" value="送信">
</form>
</body>
</html>
コンソールログの値
js_form_t1.png

このようにinput要素の値を取り出せる事が確認できました。
取り出した要素にどのようなプロパティやメソッドがあるのかを調べたい場合
レガシーDOMでは、共通な仕様はありませんでしたが、
HTML5の取り組みとして新たにHTML5 specificationとして規定されました。

どの要素にどのようなプロパティやメソッドがあるかのAPIの確認は
HTML5 specification the-input-elementをまず確認しておくと良いかもしれません。

Safari Windowオブジェクトメンバー一覧
Safari form inputオブジェクトメンバー一覧
Safari imagesオブジェクトメンバー一覧

参考サイト
Web Forms 2.0
HTML5 specification
DOM Level0
mozilla Web 開発者資料
NetScape Client-Side JavaScript Reference

WHATWG 4.8.1 The img element
WHATWG 4.10 Forms