节点插入

对于早期的w3c浏览器,并没有实现ie的私有方法insertAdjacentHTML,可以用appendChild模拟该方法的实现:

  

if(typeof HTMLElement !==‘undefined‘ && !HTMLElement.prototype.insertAdjacentHTML){
            var insertAdjacentElement = function(node,position,el){
                switch (position.toLowerCase()){
                    case ‘beforebegin‘:
                        node.parentNode.insertBefore(el,node);
                        break;
                    case ‘afterbegin‘:
                        node.insertBefore(el,node.firstChild);
                        break;
                    case ‘beforeend‘:
                        node.appendChild(el);
                        break;
                    case ‘afterend‘:
                        if(node.nextSibling){
                            node.parentNode.insertBefore(el,node.nextSibling);
                        }else{
                            node.parentNode.appendChild(el);
                        }
                        break;
                }
            };
            HTMLElement.prototype.insertAdjacentHTML = function(position,html){
                var range = document.createRange(),frag,
                        parent;
                range.setStart(document.body);
                frag = range.createContextualFragment(html);
                if(this.nodeType == 3 || this.nodeType == 8){
                    parent = this.parentNode;
                    insertAdjacentElement(parent,position,frag);
                }else{
                    insertAdjacentElement(this,position,frag);
                }
            }
        }

  但是出于好奇,我用了jsperf对插入节点的各个方法进行性能分析,发现依旧是appendChild的插入方法效率最高(指的是单位时间内的操作数)。

时间: 2024-10-19 01:45:50

节点插入的相关文章

链表(15)----给定链表中间某个节点,将待插入节点插入给定节点之前

1. 链表定义 typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next; } ListElement_t; typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListElement_t *tail; } List_t; 2.给定链表中间某个节点,将待插入节点插入给定节点之前 先将待插入节点插入给定节点之后,然后交换这两个节

C语言实现双向非循环链表的节点插入

我在之前一篇博客中<C语言实现双向非循环链表的逆序打印>讲到了如何逆序输出一个双向非循环链表,让我们对这种链表类型有了理性的认识.今天我们要来实现的是对双向非循环链表进行节点的插入.大家可以和<C语言实现单链表节点的插入>单链表的节点插入对比着学习.代码上传至  https://github.com/chenyufeng1991/InsertDoubleLinkedList . 核心代码如下: Node *InsertList(Node *pNode,int pos,int x){

C语言实现双向非循环链表(带头结点尾结点)的节点插入

对于双向链表,个人推荐使用带头结点尾结点的方式来处理会比较方便.我在<C语言实现双向非循环链表(不带头结点)的节点插入>中详细实现了在不带头结点的情况下的插入.这次我们将会来在使用头结点尾结点的情况下在任意的位置插入元素.代码上传至 https://github.com/chenyufeng1991/InsertNodeDoubleLinkedList_HeadNode . 核心代码如下: //插入一个节点 //插入位置分别为0,1,2,..... int InsertNodeList(Nod

节点插入--对比jQuery和JavaScript方法(一)

二.插入元素: 1 <div> 2 <p>面朝大海,春暖花开</p> 3 </div> (一).jQuery方法 1.在节点内部插入: 方法 说明 append() 向每个匹配的元素内部追加内容 appendTo() 把所有的元素追加到另一个指定的元素集合中,实际上是颠倒了append()的用法.如$(A).append(B)与$(B).appendto(A)是等价的 prepend() 向每个匹配的元素内部前置内容 prependTo() 把所有匹配的元素

Javascript进阶篇——(DOM—节点---插入、删除和替换元素、创建元素、创建文本节点)—笔记整理

插入节点appendChild()在指定节点的最后一个子节点列表之后添加一个新的子节点.语法: appendChild(newnode) //参数: //newnode:指定追加的节点. 为ul添加一个li,设置li内容为PHP,代码如下: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=

C语言实现单链表的节点插入(带头结点)

我在之前一篇博客<C语言实现单链表(不带头结点)节点的插入>中具体实现了怎样在一个不带头结点的单链表中进行节点的插入.可是在实际应用中,带头结点的链表更为经常使用.更为方便.今天我们就要来使用带头结点的单链表进行节点的插入.演示样例代码上传至 https://github.com/chenyufeng1991/InsertList_HeadNode  . 核心代码例如以下: Node *InsertNode(Node *pNode,int pos,int x){ int i = 0; Node

jQuery:节点(插入,复制,替换,删除)操作

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>jQuery插入,复制.替换和删除节点</title> <script type="text/javascript" src="jquery-1.3.2.js"></scri

单向非循环链表:链表创建、节点插入、链表打印、节点长度计算、链表清空、链表销毁

/* 单向非循环链表:    初始化    前插入 后插入    打印    链表长度    清空    销毁*/#include <stdio.h>#include <stdlib.h> #define itemType int typedef struct node{    itemType data;    struct node *pNext;}Node; /* 创建Head节点: 节点的pNext为NULL */int initList(Node **ppN){    N

◆◆0如何在smartform中的table节点插入分页

众所周知,在smartforms的loop节点中可以插入一个command node用来强制分页,那么如何在table节点中插入分页的command node呢? 下面简单介绍一下,这要利用到table节点的sort event,如下: 在table节点的data tab页中勾上event on sort end,别忘了输入要排序的字段,然后就会在左边table节点的最后出现一个Event on Sort End的节点,在这个下面插入command node进行分页就可以了. 值得注意的是: 1