| <!DOCTYPE html> | |
| <title>Element.getElementsByClassName</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <div id="log"></div> | |
| <script> | |
| test(function() { | |
| var a = document.createElement("a"), b = document.createElement("b") | |
| b.className = "foo" | |
| a.appendChild(b) | |
| var list = a.getElementsByClassName("foo") | |
| assert_array_equals(list, [b]) | |
| var secondList = a.getElementsByClassName("foo") | |
| assert_true(list === secondList || list !== secondList, "Caching is allowed.") | |
| }, "getElementsByClassName should work on disconnected subtrees.") | |
| test(function() { | |
| var list = document.getElementsByClassName("foo") | |
| assert_false(list instanceof NodeList, "NodeList") | |
| assert_true(list instanceof HTMLCollection, "HTMLCollection") | |
| }, "Interface should be correct.") | |
| test(function() { | |
| var a = document.createElement("a"); | |
| var b = document.createElement("b"); | |
| var c = document.createElement("c"); | |
| b.className = "foo"; | |
| document.body.appendChild(a); | |
| this.add_cleanup(function() {document.body.removeChild(a)}); | |
| a.appendChild(b); | |
| var l = a.getElementsByClassName("foo"); | |
| assert_true(l instanceof HTMLCollection); | |
| assert_equals(l.length, 1); | |
| c.className = "foo"; | |
| a.appendChild(c); | |
| assert_equals(l.length, 2); | |
| a.removeChild(c); | |
| assert_equals(l.length, 1); | |
| }, "getElementsByClassName() should be a live collection"); | |
| </script> |