在JS图片库的第五版开发完后http://www.cnblogs.com/GreenLeaves/p/5691797.html#js_Five_Version我们发现一个问题,就是假设在图片列表之后还有其他的元素,这个时候貌似就没有办法了,我们的真实想法是,让新创建的元素紧更在图片列表的后面,而不管这个列表出现在文档的那个地方.下面我们就来介绍两个方法来帮助解决这个问题。

1、insertBefore()

DOM提供了名为inerBefore()的方法,这个方法的作用是:把一个新元素插入到一个现有元素前面,而调用此方法时,你必须告诉它三件事。

(1)、newElement:你想插入的元素。

(2)、targetElement:你想把新元素插入到哪个元素(targetElement)之前。

(3)、parentElement:目标元素的父元素;  parentElement=targetElement.parentNode;

下面是调用的语法:

parentElement.insertBefore(newElement,targrtElement);

所以我们的图片库的代码可以这样换:

var gallery=document.getElementById("imagegallery");

gallery.parentNode.insertBefore(placeholder,gallery);

这种效果也不错,但是我们将新创建的图片展示舞台放到了图片清单的前面而不是我们要求的后面;所以方法仍需要改进,我们需要插到后面!

2、insertAfter()

大多数人会想,既然有insertBefore()方法肯定会有insertAfter()方法,很可惜这个方法,DOM并没有提供,但是我们却可以利用DOM所提供方法和属性来自定义一个inserAfter()方法;代码如下:

        function insertAfter(newElement, targetElement) {
/*
编写逻辑
1、首先找到给出我们需要插入的元素和用来定位的目标元素
2、根据目标元素找到两个元素的父元素
3、判断目标元素是不是父元素内的唯一的元素.
4、如果是,向父元素执行追加操作,就是appendChild(newElement)
5、如果不是,向目标元素的之后的紧接着的节点之前执行inserBefore()操作
*/
var parentElement = targetElement.parentNode; //find parent element
if (parentElement.lastChild == targetElement)//To determime确定,下决心 whether the last element of the parent element is the same as the target element
{
parentElement.appendChild(newElement);
} else {
parentElement.insertBefore(newElement, targetElement.nextSibling);
}
}

这个自定义的insertAfter()可以和之前随笔中的共享onload方法http://www.cnblogs.com/GreenLeaves/p/5726271.html

一起加入到我们自己的类库中方便开发调用。

JavaScript之insertBefore()和自定义insertAfter()的用法。的更多相关文章

  1. JavaScript为input/textarea自定义hover,focus效果

    <title>JavaScript为input/textarea自定义hover,focus效果</title> <script type="text/java ...

  2. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  3. Vue.js自定义指令的用法与实例

    市面上大多数关于Vue.js自定义指令的文章都在讲语法,很少讲实际的应用场景和用例,以致于即便明白了怎么写,也不知道怎么用.本文不讲语法,就讲自定义指令的用法. 自定义指令是用来操作DOM的.尽管Vu ...

  4. JavaScript学习(2)call&apply&bind&eval用法

    javascript学习(2)call&apply&bind&eval用法 在javascript中存在这样几种特别有用的函数,能方便我们实现各种奇技淫巧.其中,call.bi ...

  5. javascript的insertBefore、insertAfter和appendChild简单介绍

      target.insertBefore(newChild,existingChild)参数说明:1.target:被添加节点和现有节点的父节点.2.newChild:将要被插入的节点.3.exis ...

  6. Javascript的setTimeOut()和setInterval()的定时器用法

    Javascript用来处理延时和定时任务的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出一个登录框,页面每隔一段时间发送异步请 ...

  7. javascript和jquey的自定义事件小结

    “通过事件机制,可以将类设计为独立的模块,通过事件对外通信,提高了程序的开发效率.” 可以把多个关联但逻辑复杂的操作利用自定义事件的机制灵活地控制好 对象之间通过直接方法调用来交互 1)对象A直接调用 ...

  8. 全面理解JavaScript中的闭包的含义及用法

    1.什么是闭包 闭包:闭包就是能够读取其他函数内部变量的函数;闭包简单理解成“定义在一个函数内部的函数”. 闭包的形式:即内部函数能够使用它所在级别的外部函数的参数,属性或者内部函数等,并且能在包含它 ...

  9. 关于comparable与comparator的用法(即自定义集合框架用法 )

    package javastudy; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; ...

随机推荐

  1. 二叉查找树的Find,FindMin,FindMax的递归和非递归实现

    typedef struct TreeNode *Position; typedef struct TreeNode *SearchTree; struct TreeNode{ ElementType ...

  2. iOS 开发的几种手势

    今天为大家介绍一下IOS 的七种手势,手势在开发中经常用到,所以就简单 通俗易懂的说下, 话不多说,直接看代码: // 初始化一个UIimageView UIImageView *imageView ...

  3. php使用NuSoap调用java/C# webservice乱码问题

    今天调用了一个 NuSoap 的接口程序,一切流程操作都很正常,就是最后接收返回值的时候出现了乱码问题(我这边是做一个越南项目固然返回越南语,不过认为中文应该同样实用,需要的人可以尝试下)   许多使 ...

  4. poj3267--The Cow Lexicon(dp:字符串组合)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8211   Accepted: 3864 D ...

  5. CSS3属性text-overflow(省略符)实战开发详解

    先看一下效果:   好了,看完了效果,现在正式开始今天的开发旅程吧!   首先我们先创建html页面,代码如下所示(红色文字即是我们Demo的主要内容): <!DOCTYPE html> ...

  6. root cause:org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException

    今天在调试SSH与Ajax时,服务器端报出JSON异常:

  7. Programming C#.Classes and Objects.成员方法

    this关键字指向类的当前实例,this指针是类中所有非静态方法的隐藏指针,每个方法都能通过this指针指向对象的其他方法和成员变量. 因为对一个类来说,它的成员函数(方法)只有一份,所有的实例对象共 ...

  8. [转载]CTreeCtrl 和 CListCtrl 控件(VC_MFC)

    来源:http://www.cnblogs.com/kzloser/archive/2012/11/23/2783305.html Tree Control 控件(MSDN 链接) 说明: 树形控件是 ...

  9. java/php/c#版rsa签名以及验签实现

    本文为转载,请转载请注明地址: 原文地址为        http://xw-z1985.iteye.com/blog/1837376 在开放平台领域,需要给isv提供sdk,签名是Sdk中需要提供的 ...

  10. cocos2d-x -------之笔记篇 环境的安装

    cocos2d-x -------之笔记篇 环境的安装 使用到的工具有VS2010  cygwin android-NDK eclipse android SDK 1.首先是android相关环境的安 ...