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

复制代码 代码如下:

  //获取对象

  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