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 相关文章推荐
统一接口:为FireFox添加IE的方法和属性的js代码
Mar 25 Javascript
复制小说文本时出现的随机乱码的去除方法
Sep 07 Javascript
使用非html5实现js板连连看游戏示例代码
Sep 22 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
Oct 17 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
介绍JavaScript中Math.abs()方法的使用
Jun 14 Javascript
JavaScript实现标题栏文字轮播效果代码
Oct 24 Javascript
第三篇Bootstrap网格基础
Jun 21 Javascript
基于JS实现web端录音与播放功能
Apr 17 Javascript
如何实现小程序tab栏下划线动画效果
May 18 Javascript
javascript面向对象程序设计实践常用知识点总结
Jul 29 Javascript
Node.js fs模块原理及常见用途
Oct 22 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
域名查询代码公布
2006/10/09 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
JavaScript的Cookies
2008/01/16 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
python人民币小写转大写辅助工具
2018/06/20 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
python交互界面的退出方法
2019/02/16 Python
python图像和办公文档处理总结
2019/05/28 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
Python pickle模块实现对象序列化
2019/11/22 Python
Python with语句用法原理详解
2020/07/03 Python
python 装饰器的使用示例
2020/10/10 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
如何提高JDBC的性能
2013/04/30 面试题
工商管理系学生的自我评价分享
2013/11/29 职场文书
大客户销售经理职责
2013/12/04 职场文书
警校毕业生自我评价
2014/04/06 职场文书
领导班子整改方案
2014/10/25 职场文书
2016年教师节感言
2015/12/09 职场文书
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
SQLServer权限之只开启创建表权限
2022/04/12 SQL Server