简单的第一胎js?

时间:2010-04-24 16:25:07

标签: javascript css-selectors

通过javascript搜索简单的第一胎检测(无框架)。

它应该为元素的第一个子元素添加类“first”。就像用于ie的css-hacks,但是在javascript和html文件中。

必须与:first-child

类似

当我说没有框架时,我的意思是这样的代码:

<script type="text/javascript">document.documentElement.id = "js"</script>

例如:

<div class="terms">
    <dl>
        <dt>Term 1 name</dt>
        <dd>Term 1 description</dd>
    </dl>
    <dl>
        <dt>Term 2 name</dt>
        <dd>Term 2 description</dd>
    </dl>
    <dl>
        <dt>Term 3 name</dt>
        <dd>Term 3 description</dd>
    </dl>
</div>

三个<dl>,第一个包括第1项。

这个css在IE6中不起作用,这就是为什么我在寻找一个javascript解决方案。不允许使用CSS-hacks。

.terms dl:first-child { float: right; }

1 个答案:

答案 0 :(得分:2)

这会做你想要的,但你确实需要在div中添加id以便于找到它。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .terms { }
        .terms dl.first { float: right; }
    </style>
</head>
<body>
    <div id="terms" class="terms">
        <dl>
            <dt>Term 1 name</dt>
            <dd>
                Term 1 description</dd>
        </dl>
        <dl>
            <dt>Term 2 name</dt>
            <dd>
                Term 2 description</dd>
        </dl>
        <dl>
            <dt>Term 3 name</dt>
            <dd>
                Term 3 description</dd>
        </dl>
    </div>
</body>

<script type="text/javascript">

    function firstChild(element) {
        for (var i = 0; i < element.childNodes.length; i++) {
            var child = element.childNodes[i];
            if (child.nodeType == 1) {
                return child;
            }
        }
    }
    var terms = document.getElementById("terms");

    firstChild(terms).className += " first";

</script>

</html>

参考:

nodeType Constants

ELEMENT_NODE : 1 ATTRIBUTE_NODE : 2 TEXT_NODE : 3 CDATA_SECTION_NODE : 4 ENTITY_REFERENCE_NODE : 5 ENTITY_NODE : 6 PROCESSING_INSTRUCTION_NODE : 7 COMMENT_NODE : 8 DOCUMENT_NODE : 9 DOCUMENT_TYPE_NODE : 10 DOCUMENT_FRAGMENT_NODE : 11 NOTATION_NODE : 12