一些常用的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 相关文章推荐
Node.js中使用mongoskin操作mongoDB实例
Sep 28 Javascript
动态加载jQuery的方法
Jun 16 Javascript
js实现n秒倒计时后才可以点击的效果
Dec 20 Javascript
AngularJS 2.0新特性有哪些
Feb 18 Javascript
详解Bootstrap各式各样的按钮(推荐)
Dec 13 Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 Javascript
vue.js实现简单轮播图效果
Oct 10 Javascript
从源码看angular/material2 中 dialog模块的实现方法
Oct 18 Javascript
浅谈JsonObject中的key-value数据解析排序问题
Dec 06 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
Sep 05 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 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编写的导航条程序
2006/10/09 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php cli配置文件问题分析
2015/10/15 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
新浪的图片新闻效果
2007/01/13 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
四好少年事迹材料
2014/01/12 职场文书
企业军训感言
2014/02/08 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
见习报告的格式
2014/11/04 职场文书
会计电算化实训报告
2014/11/04 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python