test_elementTraversal.html (3272B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=444722 5 --> 6 <head> 7 <title>Test for the ElementTraversal spec</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 </head> 11 <body> 12 <a target="_blank" href="http://dev.w3.org/2006/webapi/ElementTraversal/publish/ElementTraversal.html">ElementTraversal</a> 13 <div id="content" style="display: none"> 14 <span>span</span><div>div</div> 15 <!--comment goes here--> 16 <p id="p1">p1</p> 17 text here 18 <p id="p2">p2</p> 19 <span>a<span>b</span>c<span>d</span>e</span> 20 </div> 21 <pre id="test"> 22 <script class="testbody" type="text/javascript"> 23 24 var c = document.getElementById('content'); 25 var cc = c.children; 26 27 var contents = ["span", "div", "p1", "p2", "abcde"]; 28 function testContent() { 29 for(i = 0, e = c.firstElementChild; e; e = e.nextElementSibling, i++) { 30 is(e.textContent, contents[i], "wrong element contents"); 31 is(e, c.children[i], "wrong element"); 32 is(e, c.children.item(i), "wrong element"); 33 } 34 is(i, contents.length, "wrong number of element siblings"); 35 is(i, c.childElementCount, "wrong number of child elements"); 36 is(i, c.children.length, "wrong number of child elements"); 37 38 // Nuke all elements to retest the child list. 39 // eslint-disable-next-line no-self-assign 40 c.innerHTML = c.innerHTML; 41 42 for(i--, e = c.lastElementChild; e; e = e.previousElementSibling, i--) { 43 is(e.textContent, contents[i], "g element contents"); 44 is(e, c.children[i], "wrong element"); 45 is(e, c.children.item(i), "wrong element"); 46 } 47 is(i, -1, "wrong number of element siblings"); 48 } 49 50 testContent(); 51 52 is(cc.length, 5, "wrong number of child elements"); 53 is(c.childElementCount, 5, "wrong number of child elements"); 54 55 var p1 = document.getElementById('p1'); 56 var p2 = document.getElementById('p2'); 57 is(p1.nextElementSibling, p2, "wrong sibling"); 58 is(p2.previousElementSibling, p1, "wrong sibling"); 59 60 u = document.createElement('u'); 61 u.textContent = 'u'; 62 c.insertBefore(u, p2); 63 is(cc.length, 6, "wrong number of child elements"); 64 is(c.childElementCount, 6, "wrong number of child elements"); 65 is(p1.nextElementSibling, u, "wrong sibling"); 66 is(p2.previousElementSibling, u, "wrong sibling"); 67 68 contents.splice(3, 0, "u"); 69 testContent(); 70 71 var p1 = document.getElementById('p1'); 72 var p2 = document.getElementById('p2'); 73 c.removeChild(p1); 74 c.removeChild(p2); 75 is(cc.length, 4, "wrong number of child elements"); 76 is(c.childElementCount, 4, "wrong number of child elements"); 77 78 contents.splice(2, 1); 79 contents.splice(3, 1); 80 testContent(); 81 82 tw = document.createTreeWalker(document.documentElement, 83 NodeFilter.SHOW_ELEMENT, 84 null); 85 e = document.documentElement; 86 87 elemsTested = 0; 88 done = false; 89 while(!done) { 90 is(tw.currentNode, e, "wrong element:" + tw.currentNode + " != " + e); 91 elemsTested++; 92 93 if(tw.firstChild()) { 94 e = e.firstElementChild; 95 } 96 else { 97 while (!tw.nextSibling()) { 98 if (!tw.parentNode()) { 99 done = true; 100 break; 101 } 102 e = e.parentNode; 103 } 104 e = e.nextElementSibling; 105 } 106 } 107 is(elemsTested, document.getElementsByTagName("*").length, 108 "wrong number of elements"); 109 </script> 110 </pre> 111 </body> 112 </html>