Source code
Revision control
Copy as Markdown
Other Tools
<head>
<title>DOM Traversal: NodeIterator: Basics Backwards</title>
<script type="text/javascript"> <![CDATA[
function doTest() {
var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, null, false);
var expected = new Array(9, // document
1, // html
3, 1, // head
3, 1, 3, // title
3, 1, 3, 4, // script and CDATA block
3, 3, 1, // body
3, 1, 3, // pre
3, // </body>
3, 8, // <!-- -->
3, 7, // <? ?>,
3, 4, 3); // CDATA
var found = new Array();
// walk document
var node;
while (node = iterator.nextNode());
while (node = iterator.previousNode())
found.unshift(node.nodeType);
// check results
var errors = 0;
var s = '';
var length = (found.length > expected.length) ? found.length : expected.length;
s += 'EXPECTED FOUND\n';
for (var i = 0; i < length; i += 1) {
s += ' ' + (expected[i] ? expected[i] : '-') +
' ' + (found[i] ? found[i] : '-');
if (found[i] != expected[i]) {
s += ' MISMATCH';
errors += 1;
}
s += '\n';
}
if (errors)
p.firstChild.data = 'FAIL: ' + errors + ' errors found:\n\n' + s;
else
p.firstChild.data = 'PASS';
}
]]></script>
</head>
<body onload="doTest()">
<pre id="result">FAIL: Script failed to run.</pre>
</body>
<!-- some more nodes to test this: -->
<?test node?>
<![CDATA[]]>
</html>