<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="d1">
<div id="d1_1"></div>
<div id="d1_2"></div>
</div>
<div id="d2">你好
<div id="d2_1">我是狗</div>
<div id="d2_2"></div>
</div> <table>
<tr>
<p>
<td id="haha">haha</td>
</p>
</tr>
</table> <script type="text/javascript">
var mylibs = {
first:function(elem){
return elem && (elem.firstElementChild || elem.firstChild);
},
last:function(elem){
return elem && (elem.lastElementChild || elem.lastChild);
},
prev:function(elem){
return elem && (elem.previousElementSibling || elem.previousSibling);
},
next:function(elem){
return elem && (elem.nextElementSibling || elem.nextSibling);
},
before:function(newElement,targetElement){
return targetElement && targetElement.parentNode ?
targetElement.parentNode.insertBefore(newElement,targetElement) :
null;
},
after:function(newElement,targetElement){
return targetElement && this.last(targetElement) == targetElement ?
// 如果最后的节点是目标元素,则直接添加。因为默认是最后
this.before(newElement,targetElement)
:
//如果不是,则插入在目标元素的下一个兄弟节点 的前面。也就是目标元素的后面
this.before(newElement, this.next(targetElement));
},
replace:function(elem,newElement,oldElement){ },
remove:function(elem){
return elem.parentNode.removeChild(elem);
},
empty:function(elem){
elem.innerHTML = '';
return elem;
},
append:function(elem,newElement){
return elem.appendChild(newElement);
},
text:function(elem,value){
return value === undefined ?
elem.textContent || elem.innerHTML.replace(/<[^<]+>/g,'') :
this.append(this.empty(elem),(elem && elem.ownerDocument || document).createTextNode(value));
},
html:function(elem,value){
if(value === undefined && elem.nodeType === 1)
return elem.innerHTML; if(typeof value === 'string' && /<(?:script|style|link)/i.test(value)){
value = value.replace(/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,'<$1></$2>');
elem.innerHTML = value;
} if(elem){
this.append(this.empty(elem),value);
}
} /*append() - 在被选元素的结尾插入内容
prepend() - 在被选元素的开头插入内容
after() - 在被选元素之后插入内容
before() - 在
remove() - 删除被选元素(及其子元素)
empty() - */ }; var dom1 = document.getElementById('d1'),
dom2 = document.getElementById('d2'); var tmp = document.createElement('div');
console.log(mylibs.after(tmp,dom2)); </script>
</body>
</html>

自己封装的操作DOM方法的更多相关文章

  1. 【分享】 封装js操作textarea 方法集合(兼容很好)。

    请使用下面的btn操作. 虽然你现在看来没什么用,当要用的时候又到处找资料,还不如现在收集一下.         在DOM里面操作textarea里面的字符,是比较麻烦的. 于是我有这个封装分享给大家 ...

  2. 用原型封装一个操作DOM的例子

    <script> // 一句话 在构造函数里面写属性 在原型里面写方法 function Elem(d){ this.even=document.getElementById(d); } ...

  3. js操作textarea方法集合

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  4. Ext JS学习第十二天 Ext基础之操作dom ; get与fly 方法

    此文用来记录学习笔记 •嗯!首先,什么是DOM(Document Object Model) –W3C对DOM的定义:文档对象模型是一个平台,一个中立于语言的应用程序编程接口(API),允许程序访问并 ...

  5. JavaScript 节点操作Dom属性和方法(转)

    JavaScript 节点操作Dom属性和方法   一些常用的dom属性和方法,列出来作为手册用. 属性:   1.Attributes 存储节点的属性列表(只读)   2.childNodes 存储 ...

  6. 封装JDBC操作数据库的方法

    自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三: ...

  7. JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分)

    JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分) 1.匹配属性的开头 $("[attributeName^='value']"); 2.匹配属性的结尾 ...

  8. zepto在操作dom的selected和checked属性时尽量使用prop方法

    zepto在操作dom的selected和checked属性时尽量使用prop方法.

  9. jQuery框架-2.jQuery操作DOM节点与jQuery.ajax方法

    一.jQuery操作DOM 内部插入操作: append(content|fn):向每个匹配的元素内部追加内容. prepend(content):向每个匹配的元素内部前置内容. 外部插入操作: af ...

随机推荐

  1. 【代码笔记】iOS-登陆单例

    一,工程图. 二,代码. UserInfo.h #import <Foundation/Foundation.h> @interface UserInfo : NSObject + (id ...

  2. 【读书笔记】iOS网络-异步请求与运行循环

    异步请求需要运行循环.当数据传递到服务器或是被客户端接收时,运行循环用于实现事件与委托对象之间的通信.异步请求在发出时,会在当前线程的运行循环上操作,这个实现细节是很重要的,因为在GCD块中或者是通过 ...

  3. iOS中响应者链条-触摸事件

    总体来说,分2个步骤: 一,从上到下寻找合适的控件来处理这个触摸事件.如下图,如果点击了黄色4,则UIApplication -> UIWindow -> 1白色 -> 2橙色 -& ...

  4. Android IPC机制之AIDL

    什么是AIDL AIDL:Android Interface Definition Language,即Android接口定义语言. Android系统中的进程之间不能共享内存,因此,需要提供一些机制 ...

  5. SVProgressHUD进度条蒙版

    GitHub:https://github.com/samvermette/SVProgressHUDSVProgressHUD和MBProgressHUD效果差不多,不过不需要使用协议,同时也不需要 ...

  6. WPF 命令基础

    1命令的组成 命令源:就是谁发送的命令. 命令目标:就是这个命令发送给谁,谁接受的命令. 命令:就是命令的内容. 命令关联:就是把命令和外围的逻辑关联起来,主要用来判断命令是否可以执行和执行完以后干点 ...

  7. php array 分页

    $array=array("1","2","3","4","5","6",&qu ...

  8. MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误的解决办法

    打开myeclipse所在的wordspace文件夹,在下面子文件夹 .metadata\.plugins\org.eclipse.core.runtime\.settings删除 com.genui ...

  9. Oracle BIEE 环境迁移所导致的账号登陆问题的解决

    系统版本 系统版本:11G(11.1.1.9) 问题描述 将系统数据(RPD.catalog等数据)迁移到另一环境(版本同样为11G)后,老系统weblogic控制台中添加的账户在新系统(仪表盘)中无 ...

  10. CentOS 下JDK安装

    第一步:查看Linux自带的JDK是否已安装 (卸载centOS已安装的1.4) 安装好的CentOS会自带OpenJdk,用命令 java -version ,会有下面的信息: java versi ...