JavaScript脚本可以为DOM动态增加节点,程序为DOM树增加节点时,页面会动态地增加HTML元素。当需要为页面增加HTML元素时,应按如下两个步骤操作。

  1. 创建或复制节点
  2. 添加节点

创建或复制节点

创建节点通常借助于document对象的createElement方法来实现,语法如下。
document.createElement(Tag): 创建Tag标签对应的节点。
下面的代码示范了如何创建一个节点。

<script>
	var a = document.creatElement("div");
	alert(a);
</script>

创建一个节点的开销可能过大,实际上还可以复制一个已有的节点,复制已有节点的系统开销略小。通过调用Node的cloneNode()方法即可复制一个已有节点,该方法的语法格式如下。
Node cloneNode(boolean deep):复制当前节点。当deep为true时,表示在复制当前节点的同时,复制该节点的全部后代节点:当deep为false 时,表示仅复制当前节点。

<ul id = "d">
	<li>原有的内容</li>
</ul>
<script>
	var ul = document.getElementById("d");
	var cj = ul.firstChild.nextSibling.cloneNode(false);
	cj.innerHTML = "新加的内容";
	ul.appendChild(cj);
</script>

添加节点

当一个节点创建成功后,一定要将该节点添加到DOM树中才能显示出来。对于普通的节点,可采用Node对象的如下方法来添加节点。

jquery追加元素过渡动画 html追加元素_js

为列表框、下拉菜单添加选项

jquery追加元素过渡动画 html追加元素_添加节点_02


下面的代码示范了通过这种方式来添加选项。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>为列表框添加选项</title>
    </head>
    <body id="test">
        <script>
            var a = document.createElement("select");
            for(var i=0;i<10;i++){
                var op =document.createElement("option");
                op.innerHTML = '新增的选项'+i;
                a.add(op,null);
            }
            a.size = 5;
            document.getElementById("test").appendChild(a);
        </script>
    </body>
</html>

上面的页面程序在早期的IE浏览器(如IE8及以前版本)中将出现错误,主要是因为它不允许调用add(方法时指定最后-一个参数为null。为了避免这种情况,可使用直接为指定选项赋值的方法来添加选项。
为指定选项赋值所支持的值必须是一个有效的选项,创建选项除了可使用前面所示的createElement()方法之外,还可使用如下构造器。

new Option(text,value,defaultSelected,selected)

jquery追加元素过渡动画 html追加元素_添加节点_03


下面的代码示范了利用第二种方法来为列表框、下拉菜单添加选项。

<body id="test">
        <script>
            var a = document.createElement("select");
            a.style.width="2000px";
            for(var i=0;i<10;i++){
                var op =new Option('新增的'+i,i);
                a.options[i]=op;
            }
            a.size = 5;
            document.getElementById("test").appendChild(a);
        </script>
</body>

动态添加表格内容

表格元素、表格行则另有添加子元素的方法。实际上,它们可以在添加子元素的同时创建这些子元素。也就是说,添加表格子元素时,往往无须使用document 的createElement()方法来创建节点。

jquery追加元素过渡动画 html追加元素_添加节点_04


下面通过脚本在页面中动态生成-一个表格。

<body id="test">
    <script>
        var a = document.createElement("table");
        a.style.width = "800px";
        a.style.borderCollapse = "collapse";
        a.border = 1;
        var caption = a.createCaption();
        caption.innerHTML = "表格标题";
        for (var i=0;i<5;i++){
            var tr = a.insertRow(i);
            for(var j=0;j<7;j++){
                var td = tr.insertCell(j);
                td.style.padding = "5px";
                td.innerHTML = "单元格内容"+i+j;
            }
        }
        document.getElementById("test").appendChild(a);
    </script>
</body>

效果为

jquery追加元素过渡动画 html追加元素_列表框_05