JavaScript:DOMからオブジェクトを作成する

私はwalkable DOMツリーを作成しようとしています。

Input:

<div>
  Foo
  Bar
</div>

Output (Python-like):

{'div': [{'span': 'Foo'},
         {'span': 'Bar'}]}

私はそれのようにそれを横断したいと思います:

elements['div']['span'];//Output is "Foo".

私の現在のコードはこれです:

function createObject(element) {
  var object = {};

  if (element.childNodes.length > 0) {
    for (var i = 0; i < element.childNodes.length; i++) {
      object[element.tagName] = createObject(element.childNodes[i]);
    }

    return object;
  } else {
    return element.nodeValue;
  }
}

しかし、動作しません(ループは実行されません)。誰もこの問題を助けることができますか?

ベストアンサー

ブラウザ間でchildNodes.lengthが異なるようですが、代わりにhasChildNodesを使用する必要がありますか?

また、firebug(または任意のjsデバッガ)を使って要素が正しく埋められているかどうか確認しましたか?

編集:間違っているものが見つかりました。オブジェクトのオブジェクトを作成することはできません。代わりに、オブジェクトの配列を作成する必要があります。子ノードがあるかどうかを確認し、子ノードがない場合はオブジェクトを作成します。それ以外の場合は、配列を作成します。

ちょうどあなたのpythonのような出力が示すように:-)

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です