javascipt操作BOM.2

   
   
   

1.BOM : Document Object Model(文档对象模型)

2.节点与节点的关系

3.访问节点:    

  1.使用getElement系列方法访问指定节点

    getElementById()

    getElementsByName()

    getElementsByTagName()  

  2.根据层次关系访问节点

    1.节点属性

      ParenNode       返回节点的父节点

      ChildNodes      返回节点集合 childnodes[i]

      firstChild     返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点

      lastChild     返回节点的最后一个子节点

      nextSibling     下一个节点

      previoussibling     上一个节点

    2.element属性

      firstElementChild 返回节点的第一个子节点最普遍的用法是访问该元素的文本节点

      lastElementChild 返回节点的最后一个节点

      nextElementSibling 下一个节点

      previousElementSibling 上一个节点

      var Next = Parent.nextElementSibling  ||  Parent.nextSibling  

      var Pre = Parent.previousElementSibling  ||  Parent.previousSibling 

      var First = Parent. firstElementChild  ||  Parent.firstChild  

      var Last = Parent.lastElementChild  ||  Parent.lastChild

      ||前后的都要写上,从而保证兼容性

当ul中没有空行的时候,弹出节点数目为n,当增加一个空行的时候,弹出的数变为6,为什么会这样呢,因为浏览器解析的时候会认为空行也是一个子节点,所以会是n+i,解决方案就是 element 属性,可以避免输出空节点

3.firstChild与firstElementChild的异同 

    相同: 它们的共同点都是获取父节点下第一个节点对象。

    不同1.firstChild可以获取文本元素而firstElemenChild不能 .

    2.但是firstElementChild只会获取元素节点对象,从名称就可以看出来,firstChild则可以获取文本节点对象(当然也可以获取元素节点对象),

比如空格和换行都被当做文本节点

4.节点信息

  nodeName : 节点名称

  nodeValue : 节点值

  nodeType : 节点类型

节点信息 nodeType值
元素element 1
属性attr 2
文本text 3
注释comments 8
文档document 9

5.操作节点的属性

  语法: getAttibute("属性名")

     setAttibute("属性名"."属性值")

6.创建和插入节点

名称 描述

createElement( tagName)

创建一个标签名为tagName的新元素节点

A.appendChild( B)

把B节点追加至A节点的末尾

insertBefore( A,B )

把A节点插入到B节点之前

cloneNode(deep)

复制某个指定的节点

   注:deep的值只有turefalse

    true 是复制本身加所有子节点

    false 只是复制自己本身

7.删除和替换节点

名称 描述

removeChild( node)

删除指定的节点

replaceChild( newNode, oldNode)

用其他的节点替换指定的节点

  实例:

    var delNode=document.getElementById("first");

    delNode.parentNode.removeChild(delNode);

    var oldNode=document.getElementById("second");

    var newNode=document.createElement("img");

    newNode.setAttribute("src","images/f03.jpg");

    oldNode.parentNode.replaceChild(newNode,oldNode);

8.操作节点样式

  改变样式的属性

    1.style属性

      语法:  HTML元素.style . 样式属性 = "值" ;

名称 描述
onclick 当用户单击某个对象是调用事件
onmouseover 鼠标移到某元素之上
onmouseout 鼠标从某元素移开
onmousedown 鼠标按钮被按下

    2.className属性

      HTML元素 . className="样式名称";

9.获得元素的样式

  语法: HTML元素.style.样式属性 ;

    实例: alert(document.getElementById("cartList").style.display);

  语法: document.defaultView.getComputerStyle(元素,null).属性;

    实例: var cartList=document.getElementById("cartList");                                          alert(document.defaultView.getComputedStyle(cartList,null).display);              

  语法: HTML元素.currentStyle.样式属性

    实例: alert(document.getElementById("cartList").currentStyle.display);

10.HTML中元素属性应用

属性 描述

offsetLeft

返回当前元素左边界到它上级元素的左边界的距离,只读属性

offsetTop

返回当前元素上边界到它上级元素的上边界的距离,只读属性

offsetHeight

返回元素的高度

offsetWidth

返回元素的宽度

offsetParent

返回元素的偏移容器,即对最近的动态定位的包含元素的引用

scrollTop

返回匹配元素的滚动条的垂直位置

scrollLeft

返回匹配元素的滚动条的水平位置

clientWidth

返回元素的可见宽度

clientHeight

返回元素的可见高度

  语法: document.documentElement.scrollTop;

    document.documentElement.scrollLeft;

    或者

    document.body.scrollTop;

    document.body.scrollLeft;

原文地址:https://www.cnblogs.com/Cherry-balls/p/13159314.html