| <!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> |