一些常用的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 相关文章推荐
jQuery学习笔记[1] jQuery中的DOM操作
Dec 03 Javascript
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
jquery uploadify 在FF下无效的解决办法
Sep 26 Javascript
javascript之Boolean类型对象
Jun 07 Javascript
RequireJS多页面应用实例分析
Jun 29 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
react开发教程之React 组件之间的通信方式
Aug 12 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
Nov 07 Javascript
JavaScript 下载svg图片为png格式
Jun 21 Javascript
vue 解决循环引用组件报错的问题
Sep 06 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
Oct 17 Javascript
es6中使用map简化复杂条件判断操作实例详解
Feb 19 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+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python判断链表是否有环的实例代码
2020/01/31 Python
Python内置异常类型全面汇总
2020/05/28 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
教师党员思想汇报
2014/01/06 职场文书
乒乓球比赛通知
2015/04/27 职场文书
2015军训通讯稿大全
2015/07/18 职场文书