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 相关文章推荐
jQuery 标题的自动翻转实现代码
Oct 14 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
Jun 24 Javascript
纯javascript判断查询日期是否为有效日期
Aug 24 Javascript
angularjs中ng-attr的用法详解
Dec 31 Javascript
详解vue2父组件传递props异步数据到子组件的问题
Jun 29 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
Mar 06 Javascript
React 使用browserHistory项目访问404问题解决
Jun 01 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
Aug 21 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
Sep 19 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
Jul 01 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
smarty模板局部缓存方法使用示例
2014/06/17 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
PHP实现的策略模式示例
2019/03/20 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
javascript制作2048游戏
2015/03/30 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Python线程创建和终止实例代码
2018/01/20 Python
python如何读写json数据
2018/03/21 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
大学生学期自我鉴定
2014/03/19 职场文书
销售类求职信
2014/06/13 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
岗位工作说明书
2014/07/29 职场文书
2014年质检员工作总结
2014/11/18 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书