Javascript:节点的操作与Style、事件

               javaScript操作节点(Element)

firstElementChild跟firstChild的区别在于,有Element代表元素,firstElementChild是元素选择器,非元素他是不会选择到的,如文本节点之类的。而firstChild是所有都选择所有节点,包括文本。

注意:IE8以上的不支持元素选择器

一、常用方法:

            元素对象.parentNode    返回节点的父节点

            元素对象.childNodes       返回节点的子节点集合

            元素对象.firstchild     获得第一个子节点

            元素对象.lastchild      获得最后一个子节点

            元素对象.previousSlibing    获取上一个节点的内容

            元素对象.nextsSlibing    获取下一个节点的内容

            元素对象.childNodes     获取所有子节点的集合

.firstchild     .lastchild    注:一般不用这两个方法来获取对象的子节点,因为无论是空格还是换行都会被计算到对象的节点中,所以获取到的即使是文本节点也算一个节点。

二、一般我们使用获取节点的方法,一般是获取它的元素节点,方法为

元素对象.firstElementChild   

元素对象.lastElementChild

元素对象.previousSlibing

元素对象.nextSlibing

三、创建,添加,替换,删除 节点

1.创建一个新的节点

var element  =  document.creatElement( "标签类型" )

2.将B标签添加到A标签的子节点里,成为子节点

A.appendChild( B )

3.删除一个节点(首先调用它的父节点,然后通过父节点来删除该节点)

元素对象.parentNode.removeChild( node )

4.替换一个节点(首先也是调用它的父节点,然后通过父节点来替换该节点)

实例代码:

创建:

<input type="button" onclick="book()" value="确定">
<div></div>
<script type="text/javascript">
    function book() {
        //获取div容器
       var tv_div= document.getElementsByTagName("div")[0];
       //创建节点
      var tv_img=  document.createElement("img");
      //赋值
        tv_img.setAttribute("src","../images/logo.png");
        tv_img.setAttribute("alt","图片无法显示");
       //追加
        tv_div.appendChild(tv_img);

    }
删除和替换
<input type="button" value="删除"  onclick="del()" >
<img src="../images/logo.png" id="first">

<input type="button" value="更换图片"  onclick="update()" >
<img src="../images/logo.png" id="two">

<script type="text/javascript">
    //删除节点
  function del() {
      var first=document.getElementById("first");
      first.parentNode.removeChild(first);
  }
  //替换节点
 function update() {

     var old_img=document.getElementById("two");
    /* old_img.setAttribute("src","../images/login-icons.png")*/
     //创建一个新节点
     var  new_img=document.createElement("img");
     new_img.setAttribute("src","../images/dd_logo.jpg");
     //替换
     old_img.parentNode.replaceChild(new_img,old_img);
 }

</script>

四、获得节点的nodeName,nodeValue,nodeType

1.节点的类型nodeType

元素节点 element返回值1   

属性节点 attr返回值2  

文本节点 text返回值3  

注释节点 comments 返回值8  

文档 document 返回值9   

这个可以通过节点类型(nodeType)来获取,后期一般用这个来判断该对象是什么类型

2.nodeVlue 节点值 对文本节点有用,假如我们需要获得一个文本节点,可以他通过child方法来获取数组,跟据文本节点的下标用nodeVlue的方法来获取这个文本信息,同时nodeVlue对元素节点没用,都会返回null

3.nodeName  返回元素的标签名,以大写形式表示

nodeName 属性指定节点的节点名称。

如果节点是元素节点,则 nodeName 属性返回标签名。

如果节点是属性节点,则 nodeName 属性返回属性的名称。

文本节点就返回#text元素节点就返回该元素标签的大写名称如   (SCRIPT  P)

nodeType  该节点的类型,返回的会根据不同类型返回不同的数值(数值在上面有写)

五、操作节点的属性

元素对象.getAttribute(" 属性名 ")      获取节点的属性信息

元素对象.setAttribute( "属性名 " ,”属性值“)       设置节点的属性信息


六、操作节点的样式

通过ID获得该节点并设置其样式的方法

document.getElementById(“tv_div" ) . style="blackground-color : red ”;

通过点style 的方法直接给它 添加 样式类型

document.getElementById(“tv_div" ). classNode="样式名称";

也可以直接添加class样式,输入class样式名,就能将当前的样式覆盖原来的class样式,请注意,是覆盖,不是添加

获取元素的样式

alert   (   document.getElementById( " tv_div" ).style.display   )

不兼容ie的话,就用下面的方法

alert   (   document.getElementById( " tv_div" ).currentstyle.display   )

实例代码:

设置样式:

<div id="tv_div">
    当前字体样式
</div>
<input type="button" value="确" onclick="showStyle()">

<script type="text/javascript">
    function showStyle() {
       var tv_div=document.getElementById("tv_div");
        tv_div.style.color="red";
        tv_div.style.fontSize="80px";
        tv_div.style.fontStyle="italic";
        tv_div.style.fontFamily="微软雅黑"
    }
</script>

获取样式:
<div id="one_div" style="font-size: 80px;background-color: #0000FF;color: red;">加油</div>

<script type="text/javascript">
    alert(document.getElementById("one_div").style.color)
    alert(document.getElementById("one_div").style.backgroundColor)
    alert(document.getElementById("one_div").style.fontSize)
</script>
更改样式:
<script type="text/javascript">
    //移入鼠标
   function over() {
       document.getElementById("cartList").className="cartOver";
       document.getElementById("cartList").className="cartListOver";
   }
    function out() {
        //移除鼠标
        document.getElementById("cartList").className="cartOut";
        document.getElementById("cartList").className="cartListOut";
    }


</script>

七、触发事件类型

onclick  点击触发

onmouseover    当鼠标移到某元素之上

onmouseout      当鼠标从某元素移开

onmousedown   鼠标按钮被按下



---------------------------------------------------------------------

1,方法,div.parentNode    返回节点的父节

            div.childNodes       返回节点的子节点集合

            div.firstchild     获得第一个子节点

            div.lastchild      获得最后一个子节点

            div.previousSlibing    获取上一个节点的内容

            div.nextsSlibing    获取下一个节点的内容

            div.childNodes     获取所有子节点的集合

            

div.firstchild     获得第一个子节点                  div.lastchild      获得最后一个子节点

注:一般不用这两个方法来获取对象的子节点,因为无论是空格还是换行都会被计算到对象的节点中,多以获取到的即使是文本节点也算一个节点,

2一般我们使用获取节点的方法,一般是获取它的元素节点,方法为

div.firstElementChild

div.lastElementChild

div.previousSlibing

div.nextSlibing

他只会获取对象子节点中的元素节点

3创建,添加,替换,删除

创建一个新的节点

var element  =  document.creatElement( "标签类型" )

将B标签添加到A标签的子节点集合的

A.appendChild( B )

删除一个节点(首先调用它的父节点,然后通过父节点来删除该节点)

div.parentNode.removeChild( node )

替换一个节点(首先也是调用它的父节点,然后通过父节点来替换该节点)

div.parentNode.replaceChild( newnode, oldnode)

4获得节点的nodeName,nodeValue,nodeType

nodeType根据类型不同就返回

1==元素element,

2==属性attr,

3==文本text,

8==注释comments,

9==文档document

注:这些返回的数字我们可以配套 i f 判断来进行别的操作

nodeVlue对文本节点有用,假如我们需要获得一个文本节点,可以他通过child方法来获取数组,跟据文本节点的下标用nodeVlue的方法来获取这个文本信息,同时nodeVlue对元素节点没用,都会返回null

nodeName会返回对应节点的name信息,假如是

文本节点就返回#text

元素节点就返回该元素标签的大写名称如   (SCRIPT  UL  LI.....)


5操作节点的属性

div.getAttribute(" 属性名 ")      获取节点的属性信息

div.setAttribute( "属性名 " ,”属性值“)       设置节点的属性信息


6.操作节点的样式

通过ID获得该节点并设置其样式的方法

document.getElementById(“tv_div" ) . style="blackground-color : red ”;

通过点style 的方法直接给它 添加 样式类型

document.getElementById(“tv_div" ). classNode="样式名称";

也可以直接添加class样式,输入class样式名,就能将当前的样式覆盖原来的class样式,请注意,是覆盖,不是添加

获取元素的样式

alert   (   document.getElementById( " tv_div" ).style.display   )

不兼容IE的话,就用下面的方法

alert   (   document.getElementById( " tv_div" ).currentstyle.display   )


7,触发事件类型

onclick  点击触发

onmouseover    当鼠标移到某元素之上

onmouseout      当鼠标从某元素移开

onmousedown   鼠标按钮被按下

当然还有很多的时间类型, w3c shcool




     代码笔记       

<div id="tv_div"><input type="button"value="确定"><ul><li>vvvvvv</li><li>bbbbb</li><li>aaaaa</li></ul></div>

<script>
     /*获得父对象*/
    var tv_div = document.getElementById("tv_div")
    /*获得第一个子节点*/
    alert(tv_div. firstChild .value)
    /*获得最后一个子节点*//*在获得最后一个子节点的子节点*/
    alert(tv_div.lastChild.lastChild.innerHTML)
    /*获得前一个节点的内容*/
    alert(tv_div.lastChild.lastChild.previousSibling.innerHTML)
    /*再获得下一个节点的内容*/
    alert(tv_div.lastChild.lastChild.previousSibling.nextSibling.innerHTML)
    /*获得父节点的长度*//*换行和空格都算长度之一*/
    alert(tv_div.childNodes.length)
</script>
---------------------------------------------------------------------------------------
不用在意空格和换行的获取元素的节点,他没有计算除元素以外的文本和空格的影响,是我们获取
节点的最佳方法
<div id="tv_div">
    <input type="button"value="确定">
    <ul>
        <li>vvvvvv</li>
        <li>bbbbb</li>
        <li>aaaaa</li>
    </ul>
</div>
<script>


    /*获得最后一个元素子节点*/
    alert(tv_div.lastElementChild.lastElementChild.innerHTML)
    /*获得第一个元素子节点*/
      alert(tv_div.firstElementChild.value)
    /*获得前一个元素节点*/
    alert(tv_div.lastElementChild.innerHTML)
    /*获得后一个元素节点*/
    alert(tv_div.firstElementChild.nextElementSibling.innerHTML)
---------------------------------------------------------------------------------------
<ul id="nodeList"><li>nodeList</li>
    <li>nodeValue</li>
    <li>nodeName</li>
</ul>
<script>
    var nodeList = document.getElementById("nodeList")
    alert(nodeList.firstChild.nodeType)
    alert(nodeList.firstChild.nodeName)
    alert(nodeList.firstChild.nodeValue)
    /*nodeName要是文本就返回#text,元素节点就返回大写的标签名*/
    /*nodeType根据类型不同就返回1==元素element,2==属性attr,3==文本text,8==注释comments,9==文档document*/
    /*nodeValue返回该节点的的包含值,假如是标签就返回null假如是文本就返回该节点的文本内容,只针对文本*/
---------------------------------------------------------------------------------------
<div id="div1" onmouseover="over()"onmouseout="out()">
    改变样式
</div>
<!--<input type="button"value="确定"onmouseover="">-->
<script>
    function over(){
        document.getElementById("div1").style.color="#f40"
        document.getElementById("div1").style.fontSize="18px"
    }
    function out(){
        document.getElementById("div1").style.color="black"
        document.getElementById("div1").style.fontSize="16px"
    }
</script>




猜你喜欢

转载自blog.csdn.net/golden_soft/article/details/80535723