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的动画类 Fx.js
Nov 05 Javascript
浅谈Javascript实现继承的方法
Jul 06 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
Aug 24 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
js 获取html5的data属性实现方法
Jul 28 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
vue的全局提示框组件实例代码
Feb 26 Javascript
js中split()方法得到的数组长度问题
Jul 19 Javascript
vue-router重定向和路由别名的使用讲解
Jan 19 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
May 14 Javascript
JS判断浏览器类型与操作系统的方法分析
Apr 30 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
一个ftp类(ini.php)
2006/10/09 PHP
一个SQL管理员的web接口
2006/10/09 PHP
基于PHP文件操作的详解
2013/06/05 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
Three.js基础部分学习
2017/01/08 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
测试工程师程序员求职信范文
2014/02/20 职场文书
董事长助理岗位职责
2015/02/11 职场文书
在职证明格式样本
2015/06/15 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
周末问候语大全
2015/11/10 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL