<!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. Android studio 克隆分支

    1.当远程仓库有两个分支时,像这样的 获得分支的远程仓库地址 注意:这个地址默认就是克隆master 分支 2.如何克隆 v1.2 分支 ? 用android studio 把项目打开,可以看到 此时 ...

  2. Android 视频播放器进度的处理

    在前面的项目中添加SeekBar <SeekBar android:id="@+id/sb" android:layout_width="match_parent& ...

  3. [转 载] android 谷歌 新控件(约束控件 )ConstraintLayout 扁平化布局

    序 在Google IO大会中不仅仅带来了Android Studio 2.2预览版,同时带给我们一个依赖约束的库. 简单来说,她是相对布局的升级版本,但是区别与相对布局更加强调约束.何为约束,即控件 ...

  4. MicroStation VBA基础

    实习笔记1 2016年8月1日 14:12 Option Explicit 缺省情况下,如果使用一个没有声明的变量,它将继承“Variant”类型.在模块.窗体和类的通用声明区使用“OptionExp ...

  5. win7---远程桌面相关的服务

    如果对方连接不到你,请将服务设置为自动,并重启电脑.

  6. Java基础知识学习(二)

    Java语法基础 数据类型.类型转换.运算符.逻辑运算符.参考C#,基本一致 输入输出 输出 System.out.print("abc"); System.out.printf( ...

  7. MySQL数据库备份命令

    原文参考:MySQL数据库备份的命令 - 司南 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql备 ...

  8. Mac上打开拷贝到移动硬盘里的文件提示“已经被osx使用不能打开”解决办法

    在终端里面粘贴xattr -d com.apple.FinderInfo(此处按一下空格),然后把文件拖进终端窗口,按一下回车就好了

  9. Java api 入门教程 之 JAVA的文件操作

    I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本 ...

  10. iOS解决隐藏导航栏后,打开照片选择器后导航栏不显示的问题以及更换导航栏背景色

    问题描述: 遇到一种情况,在一个控制器上(隐藏了导航栏),打开照片选择器 UIImagePickerController后,照片选择器头部一片空白,且上滑相册时,信息会有错乱效果. 原因分析: 通过查 ...