通过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; }
答案 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