一些常用的JS功能函数(2009-06-04更新)


Posted in Javascript onJune 04, 2009
//获取对象 
function getObject(objectId,top) 
{ 
    doc = top?window.top.document:document; 
    if(typeof(objectId)!="object" && typeof(objectId)!="function") 
    { 
        if(doc.getElementById && doc.getElementById(objectId)) 
         { 
         // W3C DOM 
         return doc.getElementById(objectId); 
         } 
        else if(doc.getElementsByName(objectId)) 
        { 
            return doc.getElementsByName(objectId)[0]; 
        } 
         else if (doc.all && doc.all(objectId)) 
         { 
         // MSIE 4 DOM 
         return doc.all(objectId); 
         } 
         else if (doc.layers && doc.layers[objectId]) 
         { 
         // NN 4 DOM.. note: this won't find nested layers 
         return doc.layers[objectId]; 
         } 
         else 
         { 
         return false; 
         } 
    }else 
        return objectId; 
} 
//获取相对路径 
function getRelativePath() 
{ 
    var url = location.href;//当前url 
    var urlcs = String(location.search); 
    url = url.replace(urlcs,""); 
    var path = url.length - url.replace(/\//g,"").length - 3;    //层次为url包含/的长度-没有包含/的长度再减去项目头/的个数     var str = ""; 
    for(var i = 0; i < path; i++) 
    { 
     str += "../";//组合成一个相对路径的字符串返回 
    } 
    return str; 
} 
//加载其他JS文件或CSS文件 
function loadjscssfile(filename,filetype,chkonce) 
{ 
    filetype = !filetype?"js":filetype; 
    var had = false; 
    if(filetype=="js") 
    { 
        if(chkonce) 
        { 
            var allScripts = document.getElementsByTagName("script"); 
            for(var i=0;i<allScripts.length;i++) 
            { 
                try{ 
                    if(allScripts[i].src.indexOf(filename)>-1) 
                    { 
                        had = true; 
                        break; 
                    } 
                }catch(e){} 
            }     
        } 
        if(!had) 
        { 
            document.write("<script src=""+filename+"" src=""+filename+"" type='text/javascript'></script>"); 
        } 
    }else 
    { 
        if(chkonce) 
        { 
            var allCss = document.getElementsByTagName("link"); 
            if(allCss.length) 
            { 
                for(var i=0;i<allCss.length;i++) 
                { 
                    try{ 
                        if(allCss[i].href.indexOf(filename)>-1) 
                        { 
                            had = true; 
                            break; 
                        } 
                    }catch(e){} 
                } 
            } 
        } 
        if(!had) 
        { 
            document.write("<link type='text/css' rel='stylesheet' href=""+filename+"" href=""+filename+"" />"); 
        } 
    } 
} 
//定义根目录路径 
var ROOT_PATH = getRelativePath(); 
var JS_PATH = ROOT_PATH+'js/'; 
var AJAX_PATH = ROOT_PATH+'ajax/'; 
var CSS_PATH = ROOT_PATH+'css/'; 
var IMAGES_PATH = ROOT_PATH+'images/'; 
var EDITOR_PATH = ROOT_PATH+'uploadeditor/'; 
var PUB_PATH = ROOT_PATH+'uploadfile/'; 
//加载公共变量的JS 
loadjscssfile(JS_PATH+"globalPara.js"); 
//设置下拉表中某一项被选中 
function setSelOption(objId,vlu) 
{ 
    objId = getObject(objId); 
    for(var i=0;i<objId.options.length;i++) 
    { 
        if(objId.options[i].value==vlu) 
        { 
            objId.options[i].setAttribute("selected","selected"); 
            break; 
        } 
    } 
} 
//根据下拉表中的option文本设置某一项被选中 
function setTxtOption(objId,txt) 
{ 
    objId = getObject(objId);         
    for(var i=0;i<objId.options.length;i++) 
    { 
        if(objId.options[i].innerHTML==txt) 
        { 
            objId.options[i].setAttribute("selected","selected"); 
            break; 
        } 
    }     
} 
//设置单选按钮组中某一项被选中 
function setSelRadio(objName,vlu) 
{ 
    objName = document.getElementsByName(objName); 
    for(var i=0;i<objName.length;i++) 
    { 
        if(objName[i].value==vlu) 
        { 
            objName[i].setAttribute("checked","checked"); 
            break; 
        } 
    } 
} 
//根据ID设置复选框中某些项被选中 
//vlu 的格式为 : 1,2,3 
function setSelCheckbox(prefix,vlu) 
{ 
    var _arr = vlu.split(","); 
    if(_arr!="") 
    { 
        for(var i=0; i<_arr.length; i++) 
        { 
            getObject(prefix+_arr[i]).checked = true; 
        } 
    } 
} 
//快捷输入,fromObj:来源对象,toObjId:目标对象的ID,txt为true时取toObjId的innerHTML值 
function fastInput(fromObj,toObjId,txt) 
{ 
    if(fromObj.value=='' || fromObj.value==0) return false; 
    txt = !txt ? false : txt; 
    var toObj = getObject(toObjId); 
    if(txt) 
    { 
        if(typeof (toObj.value) == 'undefined') 
             toObj.innerHTML = toTxt(fromObj.options[fromObj.selectedIndex].innerHTML); 
        else 
            toObj.value = toTxt(fromObj.options[fromObj.selectedIndex].innerHTML); 
    }else 
    { 
        if(typeof (toObj.value) == 'undefined') 
             toObj.innerHTML = fromObj.value; 
        else 
            toObj.value = fromObj.value;         
    } 
} 
/* 
IE6,IE7上传图片前预览图片 
IE6下还可以同时检测图片的大小 
size 单位为KB 
<style type="text/css"><!-- 
.newPreview 
{ 
    width:400px; height:300px; 
    FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale) 
} 
.nodis{display:none;} 
--></style><style type="text/css" bogus="1"> 
.newPreview 
{ 
    width:400px; height:300px; 
    FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale) 
} 
.nodis{display:none;}</style> 
<input type="file" name="litpic" onchange="PreviewImg(this,'newPreview','ndsPreview',400)" /> 
<div id="newPreview" class="newPreview"></div> 
<img id="ndsPreview" class="nodis" /> 
*/ 
function PreviewImg(imgFile,newPreview,ndsPreview,size) 
{ 
    newPreview = getObject(newPreview); 
    if(!imgFile || !imgFile.value || !newPreview){return}; 
    var patn = /\.jpg$|\.jpeg$|\.gif$|\.png$|\.bmp$/i; 
    if(patn.test(imgFile.value)) 
    { 
        try{newPreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;}catch(e){} 
        if(navigator.appVersion.indexOf("MSIE 6.0",0)>-1) 
        { 
            size=!size?0:size; 
            ndsPreview = getObject(ndsPreview); 
            if(ndsPreview) 
            { 
                try{ndsPreview.attachEvent("onreadystatechange", function(){checkImgSize(ndsPreview,size)})}catch(e){} 
                ndsPreview.src = imgFile.value; 
            } 
        } 
    } 
    else 
    { 
        alert("您选择的不是图像文件,请重新选择."); 
    } 
} 
function PreviewImgNow(imgDiv,imgFile) 
{ 
    try{getObject(imgDiv).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile}catch(e){}     
} 
//上传之前检测图片的大小 
//条件是在file改变时要触发函数将缩略图显示在img上 
//size 单位为KB 
function checkImgSize(img,size) 
{ 
    img = getObject(img); 
    if(img.readyState == "complete") 
    { 
        var limit = size * 1024; 
        if(img.fileSize > limit) 
        { 
            alert("出错!您上传的图片大小为"+(parseInt(img.fileSize/1024))+"KB,超过了"+size+"KB的限制,请重新上传"); 
            return false 
        }else 
            return true; 
    } 
    return true; 
} 
//检测客户端环境 
function ClientMentInfo() 
{ 
    var me = this;     
    var appVer = navigator.userAgent; 
    this.GetBrowserName = function (){ 
        if(appVer.indexOf("MSIE")>0) return "IE"; 
        else if(appVer.indexOf("Firefox")>0) return "Firefox"; 
        else if(appVer.indexOf("Chrome")>0) return "Chrome"; 
        else if(appVer.indexOf("Safari")>0) return "Safari"; 
        else if(appVer.indexOf("Camino")>0) return "Camino"; 
        else if(appVer.indexOf("Konqueror")>0) return "Konqueror"; 
        else return "其它"; 
    } 
    this.GetOSInfo = function (){ 
        var _pf = navigator.platform; 
        if(_pf == "Win32" || _pf == "Windows") 
        { 
            if(appVer.indexOf("Windows NT 6.0") > -1 || appVer.indexOf("Windows Vista") > -1) 
            { 
                return 'Windows Vista';     
            }else if(appVer.indexOf("Windows NT 6.1") > -1 || appVer.indexOf("Windows 7") > -1) 
            { 
                return 'Windows 7';     
            }else 
            { 
                try{ 
                    var _winName = Array('2000','XP','2003'); 
                    var _ntNum = appVer.match(/Windows NT 5.\d/i).toString(); 
                    return 'Windows ' + _winName[_ntNum.replace(/Windows NT 5.(\d)/i,"$1")]; 
                }catch(e){return 'Windows';} 
            } 
        }else if(_pf == "Mac68K" || _pf == "MacPPC" || _pf == "Macintosh") 
        { 
            return "Mac";             
        }else if(_pf == "X11") 
        { 
            return "Unix";     
        }else if(String(_pf).indexOf("Linux") > -1) 
        { 
            return "Linux";     
        }else 
        { 
            return "Unknow";     
        }         
    } 
    this.OS = me.GetOSInfo();        //操作系统类型 
    this.IeVer = null; 
    this.Bs_lang = (navigator.appName == 'Netscape'?navigator.language:navigator.browserLanguage);//浏览器语言版本 
    this.Bs_Name = me.GetBrowserName();        //浏览器名称 
    //浏览器版本 
    if(this.Bs_Name=='IE') 
    { 
        var _msie = appVer.match(/MSIE \d./i).toString(); 
        this.Bs_Version = this.IeVer = _msie.replace(/MSIE (\d)./i,"$1"); 
    }else 
    { 
        this.Bs_Version = appVer; 
    } 
    this.Ie6 = this.IeVer==6 ? true: false; 
    this.Ie7 = this.IeVer==7 ? true: false; 
    this.Ie8 = this.IeVer==8 ? true: false; 
} 
//客户端信息 
var CMInfo = new ClientMentInfo(); 
//IE6 下缓存背景图片 
if(CMInfo.Ie6) 
{ 
    document.execCommand("BackgroundImageCache", false, true); 
} 
//设置复选框全选或全不选 
function setAllCheckbox(formName,objName,num) 
{ 
    if(formName) 
        _arr = getObject(formName).elements[objName]; 
    else 
        _arr = typeof(objName)=="object"?objName:document.all(objName); 
    if(_arr) 
    { 
        if(num) 
        { 
            if (!_arr.length ) // 只有一个复选框,则length = undefined 
                _arr.checked = true; 
            else 
            { 
                for(var i=0; i<_arr.length; i++) 
                { 
                    _arr[i].checked = true; 
                } 
            } 
        }else 
        { 
            if (!_arr.length ) // 只有一个复选框,则length = undefined 
                _arr.checked = false; 
            else 
            { 
                for(var i=0; i<_arr.length; i++) 
                { 
                    _arr[i].checked = false; 
                } 
            } 
        } 
    } 
} 
//使当前页面跳到指定的页数页面 
function goPage(pageNum,pageStr) 
{ 
    window.location.href = "?np="+pageNum+pageStr; 
} 
//分别去字符串前后,左边,右边空格 
String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,"")} 
String.prototype.ltrim = function(){ return this.replace(/^\s+/g,"")} 
String.prototype.rtrim = function(){ return this.replace(/\s+$/g,"")}

注意globalPara.js本作者常用到的一些每个站自己的常用变量和常量的文件,如果你不需要这样的文件,可把
//加载公共变量的JS
loadjscssfile(JS_PATH+"globalPara.js");

这两句删掉,不然会报错。

(2009-06-04更新)
将 ClientMentInfo类改成了兼容IE6,IE7,IE8,Vista,Windows 7和Firefox

Javascript 相关文章推荐
Extjs学习笔记之九 数据模型(上)
Jan 11 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 Javascript
AngularJS表单编辑提交功能实例
Feb 13 Javascript
浅谈js的url解析函数封装
Jun 28 Javascript
jQuery easyui刷新当前tabs的方法
Sep 23 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
javascript计算渐变颜色的实例
Sep 22 Javascript
React diff算法的实现示例
Apr 20 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
JavaScript原型链详解
Nov 07 Javascript
javascript globalStorage类代码
Jun 04 #Javascript
IE8 兼容性问题(属性名区分大小写)
Jun 04 #Javascript
JavaScript效率调优经验
Jun 04 #Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
Jun 04 #Javascript
javascript 常用方法总结
Jun 03 #Javascript
Javascript 获取字符串字节数的多种方法
Jun 02 #Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
Jun 02 #Javascript
You might like
php,ajax实现分页
2008/03/27 PHP
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
python实现最速下降法
2020/03/24 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
如何保障Web服务器安全
2014/05/05 面试题
项目副经理岗位职责
2013/12/30 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
电工生产实习心得体会
2016/01/22 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
教你怎么用Python实现多路径迷宫
2021/04/29 Python
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis