Javascript 使用CSS获取HTML DOM

Javascript 使用CSS获取HTML DOM,javascript,html,css,tree,Javascript,Html,Css,Tree,CSS可以通过一个ID、类或伪选择器在元素中应用样式,但我希望得到HTML树,类似于javascript: <script type = "text/javascript"> window.onload = function () { var div = document.getElementsByTagName ("div"); div[0].style.backgroundColor = "gray"; div[0].st

CSS可以通过一个ID、类或伪选择器在元素中应用样式,但我希望得到HTML树,类似于javascript:

<script type = "text/javascript">
    window.onload = function () {
        var div = document.getElementsByTagName ("div");

        div[0].style.backgroundColor = "gray";
        div[0].style.padding = "20px";
    }
</script>

window.onload=函数(){
var div=document.getElementsByTagName(“div”);
div[0].style.backgroundColor=“灰色”;
div[0].style.padding=“20px”;
}
例如:

<style type = "text/css">
    div[0] { /* Wrong but i tried :( */
        background-color: gray;
        padding: 20px;
    }
</style>

<div >
    <div>...</div>
</div>

div[0]{/*错误,但我已尝试:(*/
背景颜色:灰色;
填充:20px;
}
...

我厌倦了将ID分配给数百万个元素;有什么方法可以做到这一点吗?

如果我理解正确,只需使用
div:first child
技术上,您可以使用:

body > div:first-child {
    background-color: gray;
    padding: 20px;
}
div div:first-of-type {
   ....
}
这将与文档的
中的第一个div匹配,但我认为这不是您真正想要的,因为这没有多大用处


我认为你最好只使用应该使用的类,而不是将ID分配给许多元素。一般来说,我发现我通常只将ID分配给“页面布局”元素(即定义页面整体结构的元素)然后就用类来做其他的事情。如果你知道你所拥有的元素的类型(如你的例子中所示),并且如果CSS3是你可以使用的一个选项,那么它永远不会变得那么笨重……

body > div:first-child {
    background-color: gray;
    padding: 20px;
}
div div:first-of-type {
   ....
}
但它在IE中不起作用。有关详细信息,请参阅。如果您不知道子元素的类型,它也不会起作用。*:类型的第一个无效。

:nth-child()和:nth-of-type()伪类允许您 使用公式选择图元

语法为
:第n个子项(an+b)
,其中用数字替换
a
b
由您选择。例如,
:第n个子项(3n+1)
选择第1个、第4个、, 第七等等,孩子


您只需要第一个
?[1]。如果您不在选择器方面提供一点帮助,那么单靠CSS无法完成您的要求。如果有“数百万”元素,JavaScript可能也不是一个好主意。[2]。为什么要为这么多元素分配ID?可能是其他类型的选择器(例如,类或可能与其他内容一起使用的后代)将完成此操作。[3]。您不会手动添加ID或其他任何内容,因此有什么问题?:-)您不应该使用一百万ID;只需将类放在需要不同样式的元素上。您可以将类放在“第一”位置在第一个div上,只需使用该选择器。这将匹配任何其他元素的子元素的第一个
。例如,使用
这个
它将匹配内部
,因为它是外部
的第一个子元素。