一些常用的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 相关文章推荐
由浅到深了解JavaScript类
Sep 08 Javascript
基于jquery的地址栏射击游戏代码
Mar 10 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
js读取并解析JSON类型数据的方法
Nov 14 Javascript
Angular的$http与$location
Dec 26 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
Jan 02 Javascript
Bootstrap 按钮样式与使用代码详解
Dec 09 Javascript
vue实现分页组件
Jun 16 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
Jul 19 Javascript
layui之数据表格--与后台交互获取数据的方法
Sep 29 Javascript
JS实现手写 forEach算法示例
Apr 29 Javascript
VueCli生产环境打包部署跨域失败的解决
Nov 13 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
一个用php实现的获取URL信息的类
2007/01/02 PHP
获得Google PR值的PHP代码
2007/01/28 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
php操作redis缓存方法分享
2015/06/03 PHP
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
vue 优化CDN加速的方法示例
2018/09/19 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
超简单的Python HTTP服务
2019/07/22 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
详解python播放音频的三种方法
2019/09/23 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
python如何调用字典的key
2020/05/25 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
Java如何调用外部Exe程序
2015/07/04 面试题
档案检查欢迎词
2014/01/13 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
学校督导评估方案
2014/06/10 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python