javascript通用代码合集
1.逐一绑定操作到window.onload上
//func:新函数
function addLoadEvent(func){
//把现有的window.onload事件处理函数的值存入变量oldonload
var oldload = window.onload;
//如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它
if(typeof oldload !== 'function'){
window.onload = func;
} else {
//如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾
window.onload = function(){
oldload();
func();
}
}
}
2.插入一个元素到另一个元素的后面
虽然dom没有提供直接的方法,但是提供了这一操作的所有“原材料”
//首先,这个函数有两个参数:一个是将被插入的新元素,另一个是目标元素。
function insertAfter(newElement, targetElement){
//把目标元素的parentNode属性值保存到变量parent里
var parent = targetElement.parentNode;
//检查目标元素是不是parent的最后一个元素
if(parent.lastChild === targetElement){
//如果是,则追加
parent.appendChild(newElement);
} else {
//如果不是,则把新元素插入到目标元素和目标元素的下一个兄弟元素之间。
parent.insertBefore(newElement,targetElement.nextSibling);
}
}
3.获取一个元素的下一个元素(不是节点,节点包括:文本节点,属性节点,元素节点)
//把当前元素的nextSibling节点作为参数传递给getNextElement函数
function getNextElement(node){
if(node.nodeType === 1){
return node;
}
if(node.nextSibling){
return getNextElement(node.nextSibling);
}
return null;
}
4.为一个元素添加className
//参数一:需要添加新class的元素
//参数二:新的class设置值
function addClass(element,value){
//检查className属性的值是否为null
if(element.className === null){
//如果是,把新的class设置值直接赋值给className属性
element.className = value;
} else {
//如果不是,把一个空格和新的class设置值追加到className属性上去
var newClassName = element.className;
newClassName += " ";
newClassName += value;
element.className = newClassName;
}
}
5.移动页面元素:前提是元素能够移动,比如postion:absolute,父元素为postion:relative
//移动元素到指定位置
//参数:
//elementID 元素ID
//final_x 目标位置横坐标
//final_y 目标位置纵坐标
//interval 计时器timeout时长
function moveElement(elementID,final_x,final_y,interval){
if(!document.getElementById) return false;
if(!document.getElementById(elementID)) return false; var elem = document.getElementById(elementID);
//清除掉元素下所有计时器,重新开始,防止多个计时器混乱
if(elem.movement){
clearTimeout(elem.movement);
}
var xpos,ypos;
//如果属性值为null,设置为0
if(!elem.style.left){
elem.style.left = "0px";
}
if(!elem.style.top){
elem.style.top = "0px";
}
xpos = parseInt(elem.style.left);
ypos = parseInt(elem.style.top);
if(xpos == final_x && ypos == final_y){
return true;
}
/*if(xpos < final_x){
xpos ++;
}*/
var dist;
if(xpos < final_x){
//实现由快到慢的动画效果
dist = Math.ceil((final_x - xpos)/10);
xpos += dist;
}
/*if(xpos > final_x){
xpos --;
}*/
if(xpos > final_x){
dist = Math.ceil((xpos - final_x)/10);
xpos -= dist;
}
/*if(ypos < final_y){
ypos ++;
}*/
if(ypos < final_y){
dist = Math.ceil((final_y - ypos)/10);
ypos += dist;
}
/*if(ypos > final_y){
ypos --;
}*/
if(ypos > final_y){
dist = Math.ceil((ypos - final_y)/10);
ypos -= dist;
}
elem.style.left = xpos + "px";
elem.style.top = ypos + "px";
var repeat = "moveElement('" + elementID + "'," + final_x + "," + final_y + "," + interval + ")";
elem.movement = setTimeout(repeat,interval);
}
6.创建XMLHttpRequest对象
function getHTTPObject(){
//检测浏览器是否存在XMLHttpRequest对象
if(typeof window.XMLHttpRequest === "undefined"){
XMLHttpRequest = function(){
try{return new ActiveXObject("Msxml2.XMLHTTP.6.0");} catch(e){}
try{return new ActiveXObject("Msxml2.XMLHTTP.3.0");} catch(e){}
try{return new ActiveXObject("Msxml2.XMLHTTP");} catch(e){}
return false;
}
}
return new XMLHttpRequest();
}
7.获取一个元素的样式
function getStyle(obj,target){
if(obj.currentStyle){
return obj.currentStyle[target];
} else {
return getComputedStyle(obj,null)[target];
}
}
8.基于html4+css2的完美运动框架
//获取元素样式
function getStyle(obj,target){
if(obj.currentStyle){
return obj.currentStyle[target];
} else {
return getComputedStyle(obj,null)[target];
}
} /**
obj:要操作的对象
json:格式如下
var json={
width:300,
height:300
}
fnEnd:回调函数
*/
function startMove(obj,json,fnEnd){
if(obj.timer){clearInterval(obj.timer);} obj.timer = setInterval(function(){
var bStop = true; //假设:所有的操作都执行完毕(测试所有属性都设置好的解决方案有很多,这里取其中一种比较巧的方式)
for(var v in json){
var attr = v;
var iTarget = json[v];
bStop = oper(obj,attr,iTarget,bStop);//执行缓冲运动
}
if(bStop){
clearInterval(obj.timer);
if(fnEnd){fnEnd();}
}
},30);
} function oper(obj,attr,iTarget,bStop){
var cur = 0;
if(attr === 'opacity'){
cur = Math.round(parseFloat(getStyle(obj,'opacity'))*100);
} else {
cur = parseInt(getStyle(obj,attr));
}
var speed = (iTarget-cur)/10;
speed = speed>0?Math.ceil(speed):Math.floor(speed); if(cur !== iTarget){
bStop = false; //没达到目标设置为否
if(attr === 'opacity'){
obj.style.opacity = parseFloat((cur + speed)/100);
obj.style.filter = 'alpha(opacity:'+(cur + speed)+')';
} else {
obj.style[attr] = cur + speed + 'px';
}
} return bStop;
}
9 获取鼠标位置
function getPos(ev){
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft||document.body.scrollLeft;
return {x:scrollLeft+ev.clientX,y:scrollTop+ev.clientY};
}
10 添加绑定事件
/*不用加on,例如:onclick写成click即可*/
function myAddEvent(obj,ev,fn){
if(obj.attachEvent){
obj.attachEvent('on'+ev,fn);
return;
}
if(obj.addEventListener){
obj.addEventListener(ev,fn,false);
return;
}
}
11 ajax调用方法
function ajax(url,succFn,failedFn){
//1.创建XMLHttpRequest对象
var oAjax = null;
if(window.ActiveXObject){
oAjax = new ActiveXObject('MicrosoftHTTP');
} else {
oAjax = new XMLHttpRequest();
}
//2.连接服务器
oAjax.open('GET',url,true);
//3.发送数据
oAjax.send();
//4.接收数据
oAjax.onreadystatechange = function(){
//解析完毕
if(oAjax.readyState === 4){
if(oAjax.status === 200){//状态码为200
succFn(oAjax.responseText);
} else {
if(failedFn){
failedFn(oAjax.status);//返回http状态码
}
}
}
}
}
11.javascript继承示例
function Drag(id){
var _this = this;
this.id = id;
this.disX = null;
this.disY = null;
this.oDiv = document.getElementById(id);
this.oDiv.onmousedown = function(ev){
_this.fnDown(ev);
return false;//阻止浏览器默认事件
};
};
Drag.prototype.fnDown = function(ev){
var oEvent = ev||event;
var _this = this;
this.disX=oEvent.clientX-this.oDiv.offsetLeft;
this.disY=oEvent.clientY-this.oDiv.offsetTop;
document.onmousemove = function(ev){
_this.fnMove(ev);
};
document.onmouseup = function(){
_this.fnUp();
};
}
Drag.prototype.fnMove = function(ev){
var oEvent = ev||event;
this.oDiv.style.left = oEvent.clientX-this.disX + 'px';
this.oDiv.style.top = oEvent.clientY-this.disY + 'px';
}
Drag.prototype.fnUp = function(){
document.onmousemove = null;
document.onmouseout = null;
}
function LimitDrag(id){
Drag.call(this,id);//继承属性
}
//继承方法
for(var v in Drag.prototype){
LimitDrag.prototype[v] = Drag.prototype[v];
}
LimitDrag.prototype.fnMove = function(ev){//重写方法
var oEvent = ev||event;
var l = oEvent.clientX-this.disX;
var t = oEvent.clientY-this.disY;
if(l<0){
l=0;
} else if(l>document.documentElement.clientWidth-this.oDiv.offsetWidth) {
l=document.documentElement.clientWidth-this.oDiv.offsetWidth;
}
if(t<0){
t=0;
} else if(t>document.documentElement.clientHeight-this.oDiv.offsetHeight){
t=document.documentElement.clientHeight-this.oDiv.offsetHeight;
}
this.oDiv.style.left = l + 'px';
this.oDiv.style.top = t + 'px';
}
javascript通用代码合集的更多相关文章
- 计算机视觉与模式识别代码合集第二版two
Topic Name Reference code Image Segmentation Segmentation by Minimum Code Length AY Yang, J. Wright, ...
- 计算机视觉与模式识别代码合集第二版three
计算机视觉与模式识别代码合集第二版three Topic Name Reference code Optical Flow Horn and Schunck's Optical Flow ...
- [ZZ] UIUC同学Jia-Bin Huang收集的计算机视觉代码合集
UIUC同学Jia-Bin Huang收集的计算机视觉代码合集 http://blog.sina.com.cn/s/blog_4a1853330100zwgm.htmlv UIUC的Jia-Bin H ...
- WooCommerce代码合集整理
本文整理了一些WooCommerce代码合集,方便查阅和使用,更是为了理清思路,提高自己.以下WooCommerce简称WC,代码放在主题的functions.php中即可. 修改首页和分类页面每页产 ...
- 【转载】GitHub 标星 1.2w+,超全 Python 常用代码合集,值得收藏!
本文转自逆袭的二胖,作者二胖 今天给大家介绍一个由一个国外小哥用好几年时间维护的 Python 代码合集.简单来说就是,这个程序员小哥在几年前开始保存自己写过的 Python 代码,同时把一些自己比较 ...
- git常用代码合集
git常用代码合集 1. Git init:初始化一个仓库 2. Git add 文件名称:添加文件到Git暂存区 3. Git commit -m “message”:将Git暂存区的代码提交到Gi ...
- JavaScript推荐资料合集(前端必看)
这份合集覆盖了所有的JavaScript基本知识,从基本网络编程技巧,如变量.函数和循环语句,到高级一些的专题,如表单验证.DOM操作.客户端对象.脚本程序调试.学习前端的你不容错过! 资料名称 下载 ...
- 常用的js代码合集
!function(util){ window.Utils = util(); }( function(){ //document_event_attributes var DEA = "d ...
- JavaScript常用API合集汇总(一)
今天这篇文章跟大家分享一些JavaScript常用的API代码,有DOM操作.CSS操作.对象(Object对象.Array对象.Number对象.String对象.Math对象.JSON对象和Con ...
随机推荐
- Mac OS 10.12使用U盘重装(转)
OS X Capitan和macOS Sierra的安装方式和下载系统的方法都是一致的,下面是OS X Capitan的安装方法: 一.准备工作: 准备一个8GB或者8G以上容量的U盘 确保里面的数据 ...
- MVC3权限验证,诡异的OnAuthorization
mvc3权限验证 protected override void OnAuthorization(AuthorizationContext filterContext) { if (//开始权限验证返 ...
- 【HADR】How to reestablish HADR from scratch after a failure on Standby
转载 http://www-01.ibm.com/support/docview.wss?uid=swg21514783 Cause Have a HADR pair with Primary on ...
- (转)AIX的SVMON命令详解
原文:http://czmmiao.iteye.com/blog/1153499 svmon概述 svmon 命令用于显示当前内存状态的信息,可通过 # lslpp bos.perf.tools 查看 ...
- c#移位运算符("<<"及">>")详细说明
以前感觉移位运算符自己挺明白的,也许是学的时间长了,后来一看,忘得差不多了.现在参考一些网上的学习资料,将位移运算符整理一下,作为知识点总结,也算个积累.在讲移位运算符之前,先简单补充一下原码与补码的 ...
- Path;Paths和Files;FileVisitor
package filet; import java.io.FileOutputStream; import java.nio.file.FileStore; import java.nio.file ...
- linux下wc功能的简单实现
1.代码来源:自己编写 2.运行环境:linux终端 3.编程语言:c/c++语言 4.bug:未发现 5.当前功能:可以统计字符的字符数.行数.单词数 6.使用方法:wc -l 文件名-->统 ...
- 多线程编程(三)-CountDownLatch的使用
CountDownLatch的介绍 类CountDownLatch是同步功能得一个辅助类,使用效果就是给定一个计数,当使用CountDownLatch类的线程判断计数不为0时,则呈wait状态,如果是 ...
- jQuery插件开发之datalist
HTML5中定义了一种input框很好看的下拉列表--datalist,然而目前它的支持性并不好(万恶的IE,好在你要渐渐退役了...).于是最近更据需求写了一个小型datalist插件,兼容到IE8 ...
- spark2.4+elasticsearch6.1.1搭建一个推荐系统
目录 整体框架 安装相关的组件 elasticsearch安装 spark安装 下载es-hadoop中间件 安装计算向量相似度的elasticsearch插件 运行 结果展示 参考博客 本博文详细记 ...