客户端JavaScript(三)

文档对象模型(DOM)

文档对象模型是表示和操作HTML和XML文档内容的基础API,HTML文档的树状结构包含HTML标签或元素和表示文本字符串的节点。

可以当成族谱来理解,html上面应该还有一位大哥--Document

那么在一个节点之上就是父节点,之下就是子节点,隔壁就是兄弟节点,这个好理解。可以百度关于DOM树的详细点

树形的根部也就是最上面的节点是Document节点,它代表整个文档,代表HTML元素的叫Element节点,代表文本的叫Text节点,主要讲Document和Element两个重要的DOM类

要注意的是其他语言也有自己的节点,因此我们此处的Document和Element节点主要是指HTMLDocument和HTMLElement

选取文档元素

选取文档元素简称取元素,可以使用全局变量document(这个应该很熟悉)来引用Document对象。为了操作DOM中的元素,必须通过某种方式获得或选取这些引用文档元素的Element对象。DOM定义了许多方式获取元素

通过ID获取元素

任何HTML元素都可以有一个ID属性,在文档值中必须唯一,即不允许出现两个ID,这个是比较好取的,因为标识符是唯一的。可以使用getElementById()方法选取基于唯一一个ID的元素

  var oI = document.getElementById('id')  //建议我们在取元素赋值变量的时候使用驼峰命名,一种比较好的规范

这里需要注意的是在IE8一下版本的浏览器中, getElement()对匹配元素不匹配大小写,而且会返回匹配name属性的元素

通过name获取元素

HTML中的name最初打算为了表单元素分配名字,在表单数据提交到服务器时使用该属性的值。类似ID属性,name是给元素分配名字,但是区别于ID,name属性的值不是必须唯一的

基于name属性的值选取HTML元素,可以使用Document对象的getElementsByName()方法

    
    
    
        
        
        
        Document
    
    
        
        

TEST

需要注意的地方,首先是getElements是复数,也就是我们获取的是所有name为img的元素,是一个数组,可以通过下标获取对应元素,此时两个元素都是有点击效果的。其实这个提不提也不重要,getElementsByName()是定义在HTMLDocument类中,不在Document类中,所以只有HTML文档可以使用此方法。同样的,IE8低配也返回ID属性匹配的元素,这个是相互的,了解一下

name还有一个比较厉害的特点,为某些HTML元素设置name属性的话,属性值将自动为Window对象中创建对应的属性,对Document对象也类似

    
    
    
        
        
        
        Document
    
    
        
        

TEST

p标签就不测试了,p标签不存在name效果。常见的name特点标签