一、共享onload事件

  这个函数的名字是addLoadEvent,它是由Simon Willison 编写的。它只有一个参数:打算在页面加载完毕时执行的函数的名字。

  下面是addLoadEvent函数将要完成的操作。

  ·把现有的window.onload事件处理函数的值存入变量oldonload。

  ·如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它。

  ·如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾。

  下面是addLoadEvent函数的代码清单:

function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}

  这将把那些在页面加载完毕时执行的函数创建为一个队列。当代码变得越来越复杂时,无论打算在页面加载完毕时执行多少个函数,只要多写一条语句就OK啦!

  addLoadEvent(firstFunction);

  addLoadEvent(secondFunction);

  ……

二、在现有的元素后插入一个新元素

  DOM中提供了insertBefore()方法,但是并没有相应的insertAfter()方法。故我们可以自己编写一个

  代码如下:

function insertAfter(newElement,targetElement){
var parent = targetElement.parentNode;
if (parent.lastChild == targetElement) {
parent.appendChild(newElement);
} else {
parent.insertBefore(newElement,targetElement.nextSubling)
}
}

  先检查目标元素是不是parent的最后一个子元素。如果是,就直接用appendChild()方法添加新子元素;如果不是,就将新子元素插入到目标元素和目标元素的下一个兄弟元素之间。

三、查找下一个元素节点

  代码如下:

function getNextElement(node){
if (node.nodeType == 1) {
return node ;
}
if (node.nextSibling) {
return getNextElement(node.nextSibling);
}
return null ;
}

四、利用JS去更新某个元素的class属性

  直接使用DOM设置或者修改样式并不理想,如果能直接在样式表里修改就更好了。

  当需要给一个元素追加新的class时,可以按照以下步骤操作:

  1、检查className属性的值是否为null;

  2、如果是,把新的class设置值直接赋值给className属性;

  3、如果不是,把一个空格和新的class设置值追加到className属性上去。

  现在我们把以上步骤封装为一个函数addClass。这个函数需要两个参数:第一个是需要添加新class的元素(element),第二个是新的class设置值(value)。

  代码如下:

function addClass(element,value) {
if (!element.className) {
element.className = value;
} else {
newClassName = element.className;
newClassName+= " ";
newClassName+= value;
element.className = newClassName;
}
}

JS脚本收藏(一些实用的函数)的更多相关文章

  1. js实用方法记录-js动态加载css、js脚本文件

    js实用方法记录-动态加载css/js 附送一个加载iframe,h5打开app代码 1. 动态加载js文件到head标签并执行回调 方法调用:dynamicLoadJs('http://www.yi ...

  2. 6.游戏特别离不开脚本(3)-JS脚本操作java(3)(直接操作JS文件或者调用函数)

    java直接运行JS脚本文件的语句,游戏开发时,策划的配置文件什么的就可以分开管理了,游戏逻辑也是一样,比如:一个功能一个脚本或者一个系统一个脚本. import java.io.FileNotFou ...

  3. 从源码中无法看出函数所在的js脚本的解决方法

    通过设置断点调试使js脚本自动出现

  4. 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获

    很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...

  5. jquery 、 JS 脚本参数的认识与使用

    jquery . JS 脚本参数的认识与使用 如何使用jquery刷新当前页面 下面介绍全页面刷新方法:有时候可能会用到 window.location.reload(); //刷新当前页面. par ...

  6. [转]js中几种实用的跨域方法原理详解

    转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同 ...

  7. A标签执行JS脚本

    A标签执行JS脚本 分类: Web2012-12-25 22:48 1368人阅读 评论(0) 收藏 举报 前言 A标签是html中常用的标签,它与button按钮是实现页面跳转的两种最常用的方式,经 ...

  8. js中几种实用的跨域方法原理详解(转)

    今天研究js跨域问题的时候发现一篇好博,非常详细地讲解了js几种跨域方法的原理,特分享一下. 原博地址:http://www.cnblogs.com/2050/p/3191744.html 下面正文开 ...

  9. js中几种实用的跨域方法原理详解

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

随机推荐

  1. php之获取程序源码的方法

    文件hello.php和index.php在同一目录 hello.php <?php class hello{ public function __construct() { echo 'hel ...

  2. linux启动和关闭

    startup,startup mount,startup nomount之间的区别: STARTUP NOMOUNT选项:(读初始化参数文件,启动实例)STARTUP NOMOUNT选项启动实例,但 ...

  3. Git学习总结

    master主分支合并dev分支,代码 :git merge dev ,跳出如下界面.输入:wq,(:wq命令是LINUX命令,强制写入文件并结束),可以强制合并.但为什么会跳出该界面,我也没搞清楚. ...

  4. 删除安装的 cocoapods 的缓存方法

    清除 Cocoapods 本地缓存 特殊情况下,由于网络或者别的原因,通过 cocoapods 下载的文件可能会有问题.这时候可以删除 Cocoapods 的缓存(~/Library/Caches/C ...

  5. Spring MVC基础入门

    Spring MVC简介 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱 ...

  6. 【CentOS】ifconfig命令 :command not found & yum命令 :cannot find a valid baserl for repo: base/7/x86_64

    第一课,学习的是安装linux的远程连接.相信看阿铭视频的朋友们都会知道,第一个开机输入完root后要敲的命令就是--ifconfig 非常幸运,这迎来了我的第一个问题 这时候你会选择百度,会搜索到这 ...

  7. cve-2015-5122漏洞分析

    HackTem爆出的第二枚0day,分析了下,做个记录. Poc中一开始会分配一个Array类型的_ar结构. 第一次赋值 此时在a[0 ] –a[1e-1] 处已被赋值为Vector.<uin ...

  8. sublime-生成html1.0

    文件--新建--输入--html:xt--CTRL+E.生成html1.0

  9. Hibernate Open Session In View模式【转】

    来源:http://www.yybean.com/opensessioninviewfilter-role-and-configuration 一.作用 Spring为我们解决Hibernate的Se ...

  10. Android源码目录结构详解(转载)

    转自:http://blog.csdn.net/xiangjai/article/details/9012387 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以 ...