常用JAVASCRIPT函数,转
/**************************************************
* * sl是scriptlover的简称 ,源自http://www.scriptlover.com(我的个人网站)
* * 该文件主要将常用的函数,功能做一下封装,以便于精炼自己的程序
* * 2008-11-27
* **************************************************
* * msn:danxinju@hotmail.com
* * author:淡新举
***************************************************/
var sl = window.sl = {
/*
** <summary>
** 添加事件监听
** </summary>
** <param name="target">监听对象</param>
** <param name="eventType">事件类型</param>
** <param name="handler">处理函数</param>
*/
addEventHandler:function(target, eventType, handler){
if (target.addEventListener)
{
target.addEventListener(eventType, handler, false);
}
else if (target.attachEvent)
{
target.attachEvent("on" + eventType, handler);
}
else
{
target["on" + eventType] = handler;
}
} ,
/*
** <summary>
** 构建字符串对象
** </summary>
*/
stringBuilder:function(){
this.arr = [];
/*添加字符项目*/
this.push = function(item){
this.arr.push(item);
};
/*清空字符串*/
this.clear = function(){
this.arr.length = 0;
};
/*返回结果字符串*/
this.toString = function(){
return this.arr.join("");
};
}
};
/*
** <summary>
** 获取对象
** </summary>
** <param name="selector">选择参数</param>
** <param name="parentNode">父节点</param>
*/
sl.getElement = function(selector ,parentNode){
/*
selector参数解释(均支持以,隔开的多重选择)
#)前缀根据id返回对象
=)根据属性返回对象
)无符号则根据tagName返回对象
*/
/*#)前缀根据id返回对象*/
var execId = function(selector){
var selector = selector.replace(/#| /g ,"");
var arr = selector.split(",") ,rets = [] ,temp;
for (var i=0;i<arr.length ;i++ )
{
temp = document.getElementById(arr[i]);
if (temp)
{
rets.push(temp);
}
}
return (rets.length > 1)? rets : rets[0];
};
/*=)根据属性返回对象*/
var execAttribute = function(selector ,parentNode){
var parentNode = parentNode? parentNode : document;
var objects = parentNode.getElementsByTagName("*");
var arr = selector.split("=") ,rets = [] ,temp;
for (var i=0;i<objects.length ;i++ )
{
if (objects[i].getAttribute(arr[0]) == arr[1])
{
rets.push(objects[i]);
}
}
return (rets.length > 1)? rets : rets[0];
};
/*无符号则根据tagName返回对象*/
var execTagName = function(selector ,parentNode){
var parentNode = parentNode? parentNode : document;
return parentNode.getElementsByTagName(selector);
};
/*分流处理*/
if (selector.indexOf("#") != -1)
{
return execId(selector ,parentNode);
}
else if (selector.indexOf("=") != -1)
{
return execAttribute(selector ,parentNode);
}
else
{
return execTagName(selector ,parentNode);
}
};
/*
** <summary>
** ajax应用
** </summary>
** <param name="url">资源地址</param>
** <param name="callback">回调方法</param>
** <param name="method">请求方式</param>
** <param name="data">所发送数据</param>
*/
sl.ajax = function(url ,callback ,method ,data){
var method = method ? method : "get";
var data = data ? data : null;
var url = (method == "get") ? (url +"?"+ data) : url;
var http = window.XMLHttpRequest? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
var doGet = function(){
http.open(method ,url ,false);
http.setRequestHeader("If-Modified-Since" , "0" );
http.send(null);
callback(http.responseText);
};
var doPost = function(){
http.open(method ,url ,false);
http.setRequestHeader("content-length" ,data ?data.length : 0);
http.setRequestHeader("Content-Type" ,"application/x-www-form-urlencoded");
http.send(data);
callback(http.responseText);
};
if (method == "post")
{
doPost();
}
else
{
doGet();
}
http = null;
};
/*
** <summary>
** URl参数处理
** </summary>
** <param name="arg">参数</param>
*/
sl.request = function(arg){
/*根据参数返回值*/
var queryString = function(arg){
var uri = window.location.search;
var re = new RegExp(""+ arg +""=([^"&"?]*)", "ig");
return ((uri.match(re))?(uri.match(re)[0].substr(arg.length+1)):null);
};
/*不传参数返回全部参数*/
var queryStrings = function(){
var uri = window.location.search;
var re = /"w*"=([^"&"?]*)/ig;
var retval=[];
while ((arr = re.exec(uri)) != null)
retval.push(arr[0]);
return retval;
};
/*分流处理*/
if (arg)
{
return queryString(arg);
}
else
{
return queryStrings();
}
};
/*
** <summary>
** Cookie处理
** </summary>
** <param name="name">cookie键名</param>
** <param name="value">cookie键值</param>
** <param name="option">可选参数</param>
*/
sl.cookie = {
/*设置cookie*/
setCookie:function(name, value, option){
var str = name +"="+ escape(value);
if(option){
if(option.expireHours){
var d = new Date();
d.setTime(d.getTime()+option.expireHours*3600*1000);
str += "; expires="+d.toGMTString();
}
if(option.path) str += "; path="+option.path;
if(option.domain) str += "; domain="+option.domain;
if(option.secure) str += "; true";
}
document.cookie = str;
} ,
/*获取cookie*/
getCookie:function(name){
var arr = document.cookie.split("; ");
if(arr.length == 0) return "";
for(var i=0; i <arr.length; i++)
{
tmp = arr[i].split("=");
if(tmp[0] == name)
{
return unescape(tmp[1]);
}
}
return "";
} ,
/*删除cookie*/
delCookie:function(name){
this.setCookie(name,"",{expireHours:-1});
} ,
/*获取cookie长度*/
getLength:function(){
return document.cookie.split("; ").length;
}
};
/*
** <summary>
** 获取鼠标位置
** </summary>
** <param name="e">事件对象</param>
*/
sl.getMousePos = function (e){
var e = e?e : event;
if (e.pageX || e.pageY)
{
return { x: e.pageX, y: e.pageY };
}
else
{
return { x: e.clientX + document.documentElement.scrollLeft - document.body.clientLeft,
y: e.clientY + document.documentElement.scrollTop - document.body.clientTop
};
}
};
/*
** <summary>
** 获取对象位置
** </summary>
** <param name="element">对象</param>
*/
sl.getElementPos = function(element){
var offsetTop = element.offsetTop;
var offsetLeft = element.offsetLeft;
while(element = element.offsetParent)
{
offsetTop += element.offsetTop;
offsetLeft += element.offsetLeft;
}
return {x:offsetLeft ,y:offsetTop};
};
- 上一篇 »linux 常用查看设备命令,转
- 下一篇 »常用的JavaScript字符串函数有哪些?