<!DOCTYPE html>
<html><head>
    <title>getElementsByClassName</title>
    <meta content="get class from children of element" name="description">
    <link href="https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname" rel="help">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
</head>
    <body>
        <div id='log'></div>
        <div>
            <div>
                <a class="text link" href="#foo">test link #foo</a>
            </div>
            <b class="text">text</b>
        </div>
        <table>
            <caption class="text caption">text caption</caption>
            <thead>
                <tr>
                    <td class="TEXT head">TEXT head</td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td class="td text1">td text1</td>
                </tr>
                <tr>
                    <td class="td text">td text</td>
                </tr>
                <tr>
                    <td class="td te xt">td te xt</td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td class="TEXT foot">TEXT foot</td>
                </tr>
            </tfoot>
        </table>
        <div class="xt te">xt te</div>

        <script type="text/javascript">
            test(function()
            {
                var collection = document.getElementsByTagName("table")[0].getElementsByClassName("te xt");
                assert_equals(collection.length, 1);
                assert_equals(collection[0].parentNode.nodeName, "TR");
            }, "get class from children of element");
        </script>
</body></html>
