document.createElement()用法


Posted in Javascript onMarch 13, 2013

 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() 方法在节点的子节点列表任意位置插入新的节点。

Javascript 相关文章推荐
JavaScript Eval 函数使用
Mar 23 Javascript
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
Nov 24 Javascript
实现web打印的各种方法介绍及实现代码
Jan 09 Javascript
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
May 23 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 Javascript
js技巧之十几行的代码实现vue.watch代码
Jun 09 Javascript
vue 权限认证token的实现方法
Jul 17 Javascript
从原生JavaScript到React深入理解
Jul 23 Javascript
js获得鼠标的坐标值的方法
Mar 13 #Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 #Javascript
九种js弹出对话框的方法总结
Mar 12 #Javascript
瀑布流布局并自动加载实现代码
Mar 12 #Javascript
JavaScript中数组对象的那些自带方法介绍
Mar 12 #Javascript
P3P Header解决Cookie跨域的问题
Mar 12 #Javascript
解决JS浮点数运算出现Bug的方法
Mar 12 #Javascript
You might like
用定制的PHP应用程序来获取Web服务器的状态信息
2006/10/09 PHP
一个php作的文本留言本的例子(六)
2006/10/09 PHP
php a simple smtp class
2007/11/26 PHP
openPNE常用方法分享
2011/11/29 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
document.createElement()用法
2013/03/13 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中的各种装饰器详解
2015/04/11 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
python单元测试unittest实例详解
2015/05/11 Python
python字符串常用方法
2018/06/14 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
Python 3 判断2个字典相同
2019/08/06 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
软件测试常见笔试题
2012/02/04 面试题
师范应届生教师求职信
2013/11/05 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
购房个人委托书范本
2014/10/11 职场文书
大学生个人总结范文
2015/02/15 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
python井字棋游戏实现人机对战
2022/04/28 Python
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js