1

私は主にC#、Java、PHP開発者です。カプセル化された関連データベース。一見無関係に見えますが、私が再び15歳になったように感じるという声明の有効な前兆です。これを睨みつけて...残念ながら単純なjavascript、それは私には何も現れていないようです。

ここでの私の意図は、現在のドキュメントのノードをループし、それらの属性を評価し、特定のノードでアクションを実行することです。私のコードは次のとおりです(これも...とても単純で劣等生のように感じます)が、出力はかなり一貫性がありません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function TraverseDocument()
{
    var Root = document.documentElement;

    for( Element in Root.childNodes )
    {
        document.writeln(Element);
    }
}
</script>
</head>

<body onLoad="javascript: TraverseDocument();">
<div id="test" testAttr="testData">
</div>
</body>
</html>

今; これはこれでの私の5番目のパス(チュートリアル、例など)であり、このコードでいくつかの順列を試したと考えてください。

// document.writeln(Element.nodeType);
// document.writeln(Element.nodeName);
// document.writeln(Element.nodeValue);

これらはすべて不足しています。'undefined'を表示します。現在のコード(最初のコードブロックに示されている)は、次のように出力します。

0 1 2 length item

誰かが私がここで間違っているところを指摘できますか?新人の質問; しかし、それでも私は指を置くことができません。よろしくお願いします。

4

1 に答える 1

2

あなたが書いた for ループは、配列内のアイテムではなく、オブジェクトのプロパティを反復します。実際に必要なのは次のとおりです。

function TraverseDocument()
{
    var Root = document.documentElement;

    for(var i = 0; i < Root.childNodes.length; i++ )
    {
        document.writeln(Root.childNodes[i]);
    }
}
于 2012-12-05T18:40:58.347 に答える