zoukankan      html  css  js  c++  java
  • js document.createElement()的用法 (转)


    document.createElement()的用法

          分析代码时,发现自己的盲点——document.createElement(),冲浪一番,总结了点经验。

          document.createElement()是在对象中创建一个对象,要与appendChild() 或 insertBefore()方法联合使用。其中,appendChild() 方法在节点的子节点列表末添加新的子节点。insertBefore() 方法在节点的子节点列表任意位置插入新的节点。

           下面,举例说明document.createElement()的用法。<div id="board"></div>

    例1:

            <script type="text/javascript">
                var board = document.getElementById("board");
                var e = document.createElement("input");
                e.type = "button";
                e.value = "这是测试加载的小例子";
                var object = board.appendChild(e);
            </script>

    效果:在标签board中加载一个按钮,属性值为“这是测试加载的小例子”。

           

    例2:

            <script type="text/javascript">
                var board = document.getElementById("board");
                var e2 = document.createElement("select");
                e2.options[0] = new Option("加载项1", "");
                e2.options[1] = new Option("加载项2", "");
                e2.size = "2";
                var object = board.appendChild(e2);
            </script>

    效果:在标签board中加载一个下拉列表框,属性值为“加载项1”和“加载项2”。

           

    例3:

            <script type="text/javascript">
                var board = document.getElementById("board");           
                var e3 = document.createElement("input");
                e4.setAttribute("type", "text");
                e4.setAttribute("name", "q");
                 e4.setAttribute("value", "使用setAttribute");
                e4.setAttribute("onclick", "javascript:alert('This is a test!');");           
                var object = board.appendChild(e3);
            </script>

    效果:在标签board中加载一个文本框,属性值为“使用setAttribute”。 当点击这个文本框时,会弹出对话框“This is a test!”。

            根据上面例子,可以看出,可以通过加载对象的属性来设置,参数是相同的。使用e.type="text" 和 e.setAttribute("type","text")效果是一致的。

           

            下面,我们用实例来讲述一下appendChild() 方法和insertBefore() 方法的不同

             比如我们要在下面这个div中插入一个子节点P时:<div id="test"><p id="x1">Node</p><p>Node</p></div>

    我们可以这样写:

    <script type="text/javascript">
    var oTest = document.getElementById("test");
    var newNode = document.createElement("p");
    newNode.innerHTML = "This is a test";
    //测试从这里开始
    //appendChild方法:
    oTest.appendChild(newNode);
    //insertBefore方法:
    oTest.insertBefore(newNode,null);
    </script>

          通过以上的代码,可以测试到一个新的节点被创建到了节点div下,且该节点是div最后一个节点。很明显,通过这个例子,可以知道appendChildhild和insertBefore都可以进行插入节点的操作。

       在上面的例子中有这样一句代码:oTest.insertBefore(newNode,null) ,这里insertBefore有2个参数可以设置,第一个是和appendChild相同的,第二却是它特有的。它不仅可以为null,还可以为:

    <script type="text/javascript">
    var oTest = document.getElementById("test");
    var refChild = document.getElementById("x1");
    var newNode = document.createElement("p");
    newNode.innerHTML = "This is a test";
    oTest.insertBefore(newNode,refChild);
    </script>

    效果:这个例子将在x1节点前面插入一个新的节点

    又或:

    <script type="text/javascript">
    var oTest = document.getElementById("test");
    var refChild = document.getElementById("x1");
    var newNode = document.createElement("p");
    newNode.innerHTML = "This is a test";
    oTest.insertBefore(newNode,refChild.nextSibling);
    </script>

    效果:这个例子将在x1节点的下一个节点前面插入一个新的节点

    还可为:

    <script type="text/javascript">
    var oTest = document.getElementById("test");
    var newNode = document.createElement("p");
    newNode.innerHTML = "This is a test";
    oTest.insertBefore(newNode,oTest.childNodes[0]); 
    </script>

      这个例子将在第一子节点前面插入一个新的节点,也可以通过改变childNodes[0,1,...]来在其它位置插入新的节点

    由于可见insertBefore()方法的特性是在已有的子节点前面插入新的节点,但例一中使用insertBefore()方法也可以在子节点列表末插入新节点的。两种情况结合起来,发现insertBefore()方法插入节点,是可以在子节点列表的任意位置。

      从这几个例子中得出:

      appendChild() 方法在节点的子节点列表末添加新的子节点。

      insertBefore() 方法在节点的子节点列表任意位置插入新的节点。

  • 相关阅读:
    Notes about "Exploring Expect"
    Reuse Sonar Checkstyle Violation Report for Custom Data Analysis
    Eclipse带参数调试的方法
    MIT Scheme Development on Ubuntu
    Manage Historical Snapshots in Sonarqube
    U盘自动弹出脚本
    hg的常用配置
    Java程序员的推荐阅读书籍
    使用shared memory 计算矩阵乘法 (其实并没有加速多少)
    CUDA 笔记
  • 原文地址:https://www.cnblogs.com/saysmy/p/5594879.html
Copyright © 2011-2022 走看看