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 相关文章推荐
两个DIV等高的JS的实现代码
Dec 23 Javascript
jQuery+jqmodal弹出窗口实现代码分明
Jun 14 Javascript
javascript基于HTML5 canvas制作画箭头组件
Jun 25 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
Jan 14 Javascript
Summernote实现图片上传功能的简单方法
Jul 11 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
vue组件生命周期详解
Nov 07 Javascript
详解ajax的data参数错误导致页面崩溃
Apr 30 Javascript
开源一个微信小程序仪表盘组件过程解析
Jul 30 Javascript
基于better-scroll 实现歌词联动功能的代码
May 07 Javascript
5个实用的JavaScript新特性
Jun 16 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
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
JQuery toggle使用分析
2009/11/16 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
JavaScript常用基础知识强化学习
2015/12/09 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
pandas中去除指定字符的实例
2018/05/18 Python
python skimage 连通性区域检测方法
2018/06/21 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
公司担保书范文
2014/05/21 职场文书
学籍证明模板
2014/11/21 职场文书
道歉短信大全
2015/05/12 职场文书
地雷战观后感
2015/06/09 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库