• dom小结


    在dom中每个节点都是一个对象,有三个重要的属性:1.nodeName 2.nodeValue 3.nodeType

    节点的名称是只读。

    元素节点的名称与标签名相同。

    属性节点的名称是属性的名称。

    文本节点的名称 永远是#text。

    文档节点的名称 永远是#document

    节点的值

    元素节点的值是 undefined 或 null。

    文本节点的值是 文本本身。

    属性节点的值是 属性的值。

    节点的类型是只读的。常用的有以下几个类型:

     元素 :1  、属性:2 、文本:3 、注释:4 、文档:5。

    node.childNodes  访问选定元素节点下的所有子节点的列表,返回的值可以看作一个数组。

    node.parentNode 获取指定节点的父节点。

    node.nextSibling 元素的后节点 , node.previousSibling 元素的前节点

    IE会忽略节点间生成的空白节点(如:换行符号),而其他浏览器不会忽略。

    eg:获取指定节点的上一个节点和下一个节点:

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>nextSibling</title>
    </head>
    <body>
    <ul id="u1">   
                <li id="a">javascript</li>   
                <li id="b">jquery</li>   
                <li id="c">html</li>   
            </ul>   
            <ul id="u2">   
                <li id="d">css3</li>   
                <li id="e">php</li>   
                <li id="f">java</li>   
            </ul>   
    <script type="text/javascript">
        function get_nextSibling(n){
            var x=n.nextSibling;
            while (x && x.nodeType!=1){
                x=x.nextSibling;
            }
            return x;
        }
    
        var x=document.getElementsByTagName("li")[0];
        document.write(x.nodeName);
        document.write(" = ");
        document.write(x.innerHTML);
        
        var y=get_nextSibling(x);
        
        if(y!=null){
            document.write("<br />nextsibling: ");
            document.write(y.nodeName);
            document.write(" = ");
            document.write(y.innerHTML);
        }else{
          document.write("<br>已经是最后一个节点");      
        }
        
        function get_previousSibling(m){
            a = m.previousSibling;
            while(a && a.nodeType!=1){
                a=a.previousSibling;
            }
            return a;
        }
        
        var a = document.getElementsByTagName("li")[5];
        document.write('<br>'+a.nodeName);
        document.write(" = ");
        document.write(a.innerHTML);
        
        var b = get_previousSibling(a);
        if(b!=null){
            document.write("<br>previousSibling:");
            document.write(b.nodeName);
            document.write(" = ");
            document.write(b.innerHTML);
        }else{
            document.write("已经是第一个元素!");
        }
    
    </script>
    </body>
    </html>

     插入节点 appendChild

    另一种插入,添加到某个节点之前:

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    </head>
    <body>
    
    <ul id="test"><li>JavaScript</li><li id="x1">HTML</li></ul> 
     
    <script type="text/javascript">
    
      var otest = document.getElementById("test");  
      var x = document.getElementById("x1");
      var y = document.createElement("li");
      y.innerHTML="php";
      otest.insertBefore(y,x);
    </script> 
    
    </body>
    </html>

     删除节点:removeChild(); 把删除的子节点赋值给x,这个节点不在DOM数中,但是还在内存中,可以通过x完全删除对象。

    var otest = document.getElementById("div");

    var x = otest.removeChild(otest.childNodes[1]);

    x = null;

    eg:删除全部节点:

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    </head>
    
    <body>
    <div id="content">
      <h1>html</h1>
      <h1>php</h1>
      <h1>javascript</h1>
      <h1>jquery</h1>
      <h1>java</h1>
    </div>
    
    <script type="text/javascript">
    function clearText() {
      var content=document.getElementById("content");
      // 在此完成该函数
      for ( var i=0;i<content.childNodes.length;i++){
          
          if(content.childNodes[i].nodeType!=1){
              continue;
          }
    else{
              content.removeChild(content.childNodes[i]);
          }
      }  
      
      var x = content.removeChild(content.childNodes[5]);
    }
    </script>
    
    <button onclick="clearText()">清除节点内容</button>
    
    
    
    </body>
    </html>

     替换元素节点: repalceChild(new,old);当oldnode被建立时,所有与之相关的属性内容都将被移除。newnode必须先被建立。

    创建元素节点: createElement(); 此方法返回一个element对象。要与appendChild()或insertBefore()方法联合使用,将元素显示在页面中。

    添加一个button:

    <script type="text/javascript">
       var body = document.body; 
       var input = document.createElement("input");  
       input.type = "button";  
       input.value = "创建一个按钮";  
       body.appendChild(input);  
     </script> 

    使用setAttribute来设置属性:

    <script type="text/javascript">  
       var body= document.body;             
       var btn = document.createElement("input");  
       btn.setAttribute("type", "text");  
       btn.setAttribute("name", "q");  
       btn.setAttribute("value", "使用setAttribute");  
       btn.setAttribute("onclick", "javascript:alert('This is a text!');");       
       body.appendChild(btn);  
    </script> 
    oracle Form 开发
  • 相关阅读:
    都不敢上CSDN了
    什么是函数(function)?
    今天3/8妇女节
    一件有意思的事情:关于std::string和std::auto_ptr
    转两篇Link相关的文章
    DevIL Downloads
    状态模式(State Pattern)
    访问者模式(Visitor Pattern)
    羊皮卷的故事第二章
    备忘录模式(Memento Pattern)
  • 原文地址:https://www.cnblogs.com/watson945/p/5092181.html
Copyright © 2020-2023  润新知