javascript常用函数(1)

文章主要内容列表:

1、  调整图片大小,不走形(FF IE 兼容)/ 剪切图片(overflow:hidden)
2、  控制textarea区域文字数量
3、  点击显示新窗口
4、  input框自动随内容自动变长
5、  添加收藏夹
6、  设置首页
7、  Jquery + Ajax 判断用户是否存在
8、  判断email格式是否正确
9、  综合判断用户名(长度,英文字段等)
10、新闻滚动
11、 只允许输入正整数 (shopping cart 使用) 或者 正数 (正整数和正小数)
12、 转换字符串为数字
13、 判断文件格式(获得文件后缀)
14、 截取字符串
15、分割字符串

主要内容 :
1、 调整图片大小,不走形(FF IE 兼容)

// 用法 <img src="this_image_path.jpg" onload="DrawImage(this,450,450);" />
 function DrawImage(ImgD,FitWidth,FitHeight){
 var image=new Image();
 image.src=ImgD.src;
 if(image.width>0 && image.height>0){
  if(image.width/image.height>= FitWidth/FitHeight){
  if(image.width>FitWidth){
   ImgD.width=FitWidth;
   ImgD.height=(image.height*FitWidth)/image.width;
  }else{
   ImgD.width=image.width;
   ImgD.height=image.height;
  }
  } else{
  if(image.height>FitHeight){
   ImgD.height=FitHeight;
   ImgD.width=(image.width*FitHeight)/image.height;
  }else{
   ImgD.width=image.width;
   ImgD.height=image.height;
  }
  }
 }
 } 

通过 overflow:hidden进行剪切:

function clipImage(o, w, h){
 var img = new Image();
 img.src = o.src;
 if(img.width >0 && img.height>0)
 {
 if(img.width/img.height >= w/h)
 {
  if(img.width > w)
  {
  o.width = (img.width*h)/img.height;
  o.height = h;
  //o.setAttribute("style", "marginLeft:-" + ((o.width-w)/2).toString() + "px");
  $(o).css("margin-left", "-"+((o.width-w)/2).toString() + "px");
  }
  else
  {
  o.width = img.width;
  o.height = img.height;
  }
 }
 else
 {
  if(img.height > h)
  {
  o.height = (img.height*w)/img.width;
  o.width = w;
  //o.setAttribute("style", "margin-top:-" + ((o.height-h)/2).toString() + "px");
  //$(o).css("style", "margin-top:-" + ((o.height-h)/2).toString() + "px");
  $(o).css("margin-top", "-"+((o.height-h)/2).toString() + "px");
 }
  else
  {
  o.width = img.width;
  o.height = img.height;
  }
 }
 }
}

实例:

<style type="text/css">
 ul{list-style:none;}
 ul li{float:left;padding:1px;border:#ccc 1px solid;width:120px;height:120px;overflow:hidden;text-align:center;over-flow:hidden;}
</style>
<ul>
 <li><img src="1.jpg" onload="DrawImage(this,120,120);" /></li>
 <li><img src="2.jpg" onload="clipImage(this,120,120);" /></li>
</ul>

2、控制textarea区域文字数量

<script>
/**
 * Calculate how many characters remain in a textarea (jQuery)
 * @param string textarea
 * @param int maxLength
 * @param string div
 */
function charsRemain(textarea, maxLength, div) {
 var currentLength = $(textarea).val().length; 

 var charsLeft = maxLength - currentLength;
 if (charsLeft < 0) { charsLeft = 0; } 

 $("#"+ div +"_charsRemain").html(charsLeft); 

 if (currentLength > maxLength) {
 var fullText = $(textarea).val().substring(0, maxLength);
 $(textarea).val(fullText);
 }
} 

/**
 * Calculate how many characters remain in a textarea (javascript)
 * @param string textarea
 * @param int maxLength
 * @param string div
 */
function charsRemain(textarea, maxLength, div) {
 var currentLength = textarea.value.length; 

 var charsLeft = maxLength - currentLength;
 if (charsLeft < 0) { charsLeft = 0; } 

 document.getElementById(div +"_charsRemain").innerHTML = charsLeft; 

 if (currentLength > maxLength) {
 var fullText = textarea.value.substring(0, maxLength);
 textarea.value = fullText;
 }
}
</script> 

<textarea rows="5" cols="15" onkeyup="charsRemain(this, 250, 'textarea');"></textarea> 

<span id="textarea_charsRemain">250</span> characters remaining

3、点击显示新窗口

//弹窗
function g_OpenWindow(pageURL, innerWidth, innerHeight)
{
 var ScreenWidth = screen.availWidth
 var ScreenHeight = screen.availHeight
 var StartX = (ScreenWidth - innerWidth) / 2
 var StartY = (ScreenHeight - innerHeight) / 2
 var wins = window.open(pageURL, 'OpenWin', 'left='+ StartX + ', top='+ StartY + ', Width=' + innerWidth +', height=' + innerHeight + ', resizable=yes, scrollbars=yes, status=no, toolbar=no, menubar=no, location=no')
 wins.focus();
}

Java代码 :

<script language="JavaScript">
 // 自动弹出窗口
 var whatsNew = open('','_blank','top=50,left=50,width=200,height=300,' + 'menubar=no,toolbar=no,directories=no,location=no,' + 'status=no,resizable=no,scrollbars=yes');
 whatsNew.document.write('<center><b>news</b>< /center>');
 whatsNew.document.write('<p>this is a test');
 whatsNew.document.write('<p>deos address');
 whatsNew.document.write('<p align="right">' + '<a href="javascript:self.close()">Close</a>');
 whatsNew.document.close();
</script>

不幸的是,很多浏览器会屏蔽弹出窗口,你需要手动允许后方可看到!下面是强制弹出窗口,原理就是创建一个form,通过post打开。

<script language="javascript">
 function ForceWindow (){
 this.r = document.documentElement;
 this.f = document.createElement("FORM");
 this.f.target = "_blank";
 this.f.method = "post";
 this.r.insertBefore(this.f, this.r.childNodes[0]); //XML DOM : insertBefore() 方法可在已有的子节点前插入一个新的子节点。 insertBefore(newchild,refchild)
 } 

 ForceWindow.prototype.pop = function (sUrl){
 this.f.action = sUrl;
 this.f.submit();
 } 

 window.force = new ForceWindow();
</script> 

<body onLoad="window.force.pop('http://deographics.com/')">
 <div>
this is a test ! we will open the deographics's website~~
 </div>
</body>

当然还有更好的办法就是

<script>
 function openWin(){
 window.showModalDialog(url,window, "help:no;scroll:no;resizable:no;status:0;dialogWidth:420px;dialogHeight:200px;center:yes");
 }
</script> 

 4、input框自动随内容自动变长

// input auto length
 // <input name="words" size="2" maxlength="100" onkeyup="checkLength(this)"/><span id="char">0</span> 

 function checkLength(which) {
 var maxchar=100;
 //var oTextCount = document.getElementById("char");
 iCount = which.value.replace(/[^\u0000-\u00ff]/g,"aa").length;
 if(iCount<=maxchar){
  //oTextCount.innerHTML = "<font color=#FF0000>"+ iCount+"</font>";
  which.style.border = '1px dotted #FF0000';
  which.size=iCount+2;
 }else{
  alert('Please input letter less than '+ maxchar);
 }
 }

5、添加收藏夹

// addfavorite
 function addfavorite(){
 if (document.all){
  window.external.addFavorite('http://deographics.com/','deographics');
 }else if (window.sidebar){
  window.sidebar.addPanel('deographics', 'http://deographics.com/', "");
 }
 }

 6、设置首页

// setHomepage
 function setHomepage(){
 if(document.all){
  document.body.style.behavior = 'url(#default#homepage)';
  document.body.setHomePage('http://deographics.com/');
 }else if(window.sidebar){
  if(window.netscape){
  try{
   netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  }catch(e){
   alert(" The operation was refused by browser,if you want to enable this feature, please enter in the address column 'about:config', then, change 'signed.applets.codebase_principal_support' to 'true' ");
  }
  }
  var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
  prefs.setCharPref('browser.startup.homepage','http://deographics.com/');
 }
 }

7、Jquery + Ajax 判断用户是否存在

// 检测 用户名是否存在
$("#username").blur(function(){
 var name = $(this).val(); var table = $(this).attr('title');
 if(name!=''){
 var dataString = 'username='+ name + '&table=' + table;
 $.post("operate.php",dataString,function(data){ //alert(data);
  if(data==0){
  alert('This username already exist !'); $(this).val('').focus(); return false;
  }
 });
 }
});

或者

var datastring = 'id=' + $id + '&pos=' + $pos;
$.ajax({
 type: "POST",
 url: url,
 data: dataString,
 beforeSend: function(){},
 error: function(){alert('Send Error !');},
 success: function(data) {
 // do something
 }
 });

8、判断email格式是否正确

function chekemail(temail){
 var pattern = /^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,4}$/i;
 if(pattern.test(temail)){return true;}else{return false;}
} 

 9、综合判断用户名(长度,英文字段等)

// 实例
 var username = $('#username');
 var backValue = VerifyInput('username'); 

 if(backValue == 'length'){
 alert("Username is make up of 3 - 15 characters!");
  username.focus();
  return false;
 }else if(backValue == 'first'){
 alert("the First character must be letter or number !");
  username.focus();
  return false;
 }else if(backValue == 'back'){
 alert("Username only contains letter number or '_' ");
  username.focus();
  return false;
 }
// 判断
 function VerifyInput(user){
 var strUserID = $('#'+user).val();
 if (strUserID.length < 3 || strUserID.length > 15){
  return 'length';
 }else{
  for (nIndex=0; nIndex<strUserID.length; nIndex++){
  cCheck = strUserID.charAt(nIndex);
  if ( nIndex==0 && ( cCheck =='-' || cCheck =='_') ){
     return 'first';
    }
  if (!(IsDigit(cCheck) || IsAlpha(cCheck) || cCheck=='-' || cCheck=='_' )){
     return 'back';
    }
  }
 }
 }
 function IsDigit(cCheck) {return (('0'<=cCheck) && (cCheck<='9'));}
 function IsAlpha(cCheck) {return ((('a'<=cCheck) && (cCheck<='z')) || (('A'<=cCheck) && (cCheck<='Z')))}

10、新闻滚动

<style type="text/css">
ul,li{margin:0;padding:0;font-size:12px;color:#999;}
ul{height:100px;overflow:hidden;}
ul li{line-height:20px;height:20px;}
</style> 

<ul id="news">
 <li>New York web design Inc.1</li>
 <li>Your site will be structured 2</li>
 <li>hat will communicate the 3</li> 

 <li>hat will communicate the 4</li>
 <li>hat will communicate the 5</li>
 <li>hat will communicate the 6</li>
 <li>hat will communicate the 7</li>
 <li>hat will communicate the 8</li>
 <li>hat will communicate the 9</li> 

 <li>New York web design Inc. 10</li>
 <li>New York web design Inc.11</li>
 <li>New York web design Inc. 12</li>
 <li>New York web design Inc. 13</li>
 <li>New York web design Inc. 14</li>
</ul> 

Java代码

// 用法 : 四个参数分别是:操作对象, 停留时间,相对速度(越小越快),每次滚动多少(最好和Li的Line-height一致)。 

scroll('news', 3000, 1, 20 ); 

function scroll(element, delay, speed, lineHeight) {
 var numpergroup = 5;
 var slideBox = (typeof element == 'string')?document.getElementById(element):element;
 var delay = delay||1000;
 var speed=speed||20;
 var lineHeight = lineHeight||20;
 var tid = null, pause = false;
 var liLength = slideBox.getElementsByTagName('li').length;
 var lack = numpergroup-liLength%numpergroup;
 for(i=0;i<lack;i++){
 slideBox.appendChild(document.createElement("li"));
 }
 var start = function() {
  tid=setInterval(slide, speed);
 }
 var slide = function() {
  if (pause) return;
  slideBox.scrollTop += 2;
  if ( slideBox.scrollTop % lineHeight == 0 ) {
  clearInterval(tid);
  for(i=0;i<numpergroup;i++){
   slideBox.appendChild(slideBox.getElementsByTagName('li')[0]);
  }
  slideBox.scrollTop = 0;
  setTimeout(start, delay);
  }
 }
 slideBox.onmouseover=function(){pause=true;}
 slideBox.onmouseout=function(){pause=false;}
 setTimeout(start, delay);
}

11、只允许输入正整数 (shopping cart 使用)

<script language="JavaScript" type="text/javascript">
function checkNum(obj){
 var re = /^[1-9]\d*$/;
 if (!re.test(obj.value)){
 alert("只允许正整数!");
 obj.value='';
 obj.focus();
 return false;
 }
}
</script> 

<input name="rate" type="text"onkeyup="checkNum(this)" /> 

或正数

<script language="JavaScript" type="text/javascript">
 function clearNoNum(obj)
 {
 //先把非数字的都替换掉,除了数字和.
 objobj.value = obj.value.replace(/[^\d.]/g,"");
 //必须保证第一个为数字而不是.
 objobj.value = obj.value.replace(/^\./g,"");
 //保证只有出现一个.而没有多个.
 objobj.value = obj.value.replace(/\.{2,}/g,".");
 //保证.只出现一次,而不能出现两次以上
 objobj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
 }
</script>

只能输入数字和小数点的文本框:<input id="input1" onkeyup="clearNoNum(this)">  
12、 转换字符串为数字

/*
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
*/ 

parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN 

parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN 

/*
还可使用强制类型转换(type casting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
*/ 

Boolean(""); //false – empty string
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object 

Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100 

var s1 = String(null); //"null"
var oNull = null;
var s2 = oNull.toString(); //won't work, causes an error

13、 判断文件格式(获得文件后缀)

// 用法:get_ext(this,'img'); 

function get_ext(name){
 var pos = name.lastIndexOf('.');
 var extname = name.substring(pos,name.length) // like: str.split('.')
 var lastname = extname.toLowerCase(); 

 if (lastname !='.jpg' && lastname !='.gif' && lastname !='.png' && lastname !='.bmp'){
  return lastname;
 }else{
  return name;
 }
 }
}

14、截取字符串

// 简单型 

<script type="text/javascript"> 

var str="Hello world!"
document.write(str.substr(3,7)) 

</script> 

// 结果是 lo worl 

// 复杂型(中文或者中英文混合截取) 

<script>
//截取字符串 包含中文处理
//(串,长度,增加...)
function subString(str, len, hasDot)
{
 var newLength = 0;
 var newStr = "";
 var chineseRegex = /[^\x00-\xff]/g;
 var singleChar = "";
 var strLength = str.replace(chineseRegex,"**").length;
 for(var i = 0;i < strLength;i++)
 {
 singleChar = str.charAt(i).toString();
 if(singleChar.match(chineseRegex) != null)
 {
  newLength += 2;
 }
 else
 {
  newLength++;
 }
 if(newLength > len)
 {
  break;
 }
 newStr += singleChar;
 } 

 if(hasDot && strLength > len)
 {
 newStr += "...";
 }
 return newStr;
} 

document.write(subString("你好,this is a test!",10,1)); // 参数依次为 字符串, 截取的长度 和 是否显示省略号
</script> 

15、分割字符串

<script type="text/javascript"> 

var str = 'this_is_a_test_!';
var arr = str.split('_'); 

document.write(arr + "<br />"); // 罗列全部
document.write(arr[0] + "<br />"); // 取单项 

</script>

以上就是小编为大家整理的常用的javascript函数,希望对大家的学习有所帮助,之后还有更多javascript常用函数分享给大家,继续关注。

(0)

相关推荐

  • Javascript获取当前时间函数和时间操作小结

    在项目需要一个计时器,效果如下: js代码: 复制代码 代码如下: /*获取当前时间*/     function getCurrentDate()     {       var timeStr = '';       var curDate = new Date();       var curMonth = curDate.getMonth()+1;  //获取当前月份(0-11,0代表1月)       var curDay = curDate.getDate();       //获取

  • 详谈JavaScript 匿名函数及闭包

    1.匿名函数 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途.匿名函数:就是没有函数名的函数. 1.1 函数的定义,首先简单介绍一下函数的定义,大致可分为三种方式 第一种:这也是最常规的一种 复制代码 代码如下: function double(x){     return 2 * x;   } 第二种:这种方法使用了Function构造函数,把参数列表和函数体都作为字符串,很不方便,不建议使用. 复制代码 代码如下: var double = new Functio

  • javascript 终止函数执行操作

    1.如果终止一个函数的用return即可,实例如下:function testA(){    alert('a');    alert('b');    alert('c');}testA(); 程序执行会依次弹出'a','b','c'. function testA(){    alert('a');    return;    alert('b');    alert('c');}testA(); 程序执行弹出'a'便会终止. 2.在函数中调用别的函数,在被调用函数终止的同时也希望调用的函数

  • javascript字母大小写转换的4个函数详解

    js中实现字母大小写转换主要用到了四个js函数: 1.toLocaleUpperCase2.toUpperCase3.toLocaleLowerCase4.toLowerCase 下面就这四个实现大小写转换的js函数逐一做简单的分析. 1.toLocaleUpperCase 将字符串中所有的字母字符都将被转换为大写的,同时适应宿主环境的当前区域设置. 2.toUpperCase 将字符串中的所有字母都被转化为大写字母. 3.toLocaleLowerCase 将字符串所有的字母字符都被转换为小写

  • JavaScript中的alert()函数使用技巧详解

    在JavaScript代码中,可以使用window对象的alert()函数来显示一段文本,从而进行程序的调试,或者向用户警示相关信息: 复制代码 代码如下: //Use window object's alert() function window.alert("sample text"); 这一写法可以简化为直接使用alert()函数: 复制代码 代码如下: //Simplified alert() usage alert("sample text"); 如果需要

  • JavaScript数组函数unshift、shift、pop、push使用实例

    如何声明数组 s中数组的声明可以有几种方式声明 复制代码 代码如下: var tmp = [];  // 简写模式 var tmp = new Array(); // 直接new一个 var tmp = Array();  // 或者new也可以 在new数组的时候可以传入一个参数,表示数组的初始化长度 复制代码 代码如下: // new的时候传入一个参数表示初始化数组长度 var tmp = new Array(3);   alert(tmp.length);  // 3 但如果你想创建一个只

  • javascript 自定义回调函数示例代码

    如果你直接在函数a里调用的话,那么这个回调函数就被限制死了.但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数.如果你写成了functiona(){...;b();}就失去了变量的灵活性. 复制代码 代码如下: function a(index,callback){ callback(index); } function b(index){ alert(index); } a(10000,b);

  • JavaScript实现的in_array函数

    在JS中要判断一个值是否在数组中并没有函数直接使用,如PHP中就有in_array()这个函数.但我们可以写一个类似in_array()函数来判断是一个值否在函数中. /** * JS判断一个值是否存在数组中 */ // 定义一个判断函数 var in_array = function(arr){ // 判断参数是不是数组 var isArr = arr && console.log( typeof arr==='object' ? arr.constructor===Array ? ar

  • 理解javascript中的回调函数(callback)

    最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(function(req, res, next) {     var err = new Error('Not Found');     err.status = 404;     next(err); }); app是对象,use是方法,方法的参数是一个带参的匿名函数,函数体直接在后面给出了.这段代码

  • JavaScript中的console.dir()函数介绍

    在调试JavaScript程序时,有时需要dump某些对象的详细信息.通过手工编写JavaScript代码可以完成这一工作:针对对象的属性进行循环,将循环到的每一个属性值打印出来:可见,这一过程是比较繁琐的.在具备调试工具的浏览器上,这一工作可以通过console.dir()语句来方便的完成. console.dir()的使用 console.dir()的使用非常简单,直接将需要dump的对象传入该语句即可.比如以下的例子: 复制代码 代码如下: function cat(name, age,

  • JavaScript中的apply和call函数详解

    第一次翻译技术文章,见笑了! 翻译原文: Function.apply and Function.call in JavaScript 第一段略. 每个JavaScript函数都会有很多附属的(attached)方法,包括toString().call()以及apply().听起来,你是否会感到奇怪,一个函数可能会有属于它自己的方法,但是记住,JavaScript中的每个函数都是一个对象.看一下 这篇文章 ,复习一下(refresher)JavaScript特性.你可能还想知道JavaScrip

  • javascript中声明函数的方法及调用函数的返回值

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <!--js中声明函数的方法--> <script type="text/javascript"> //因为javascript是弱类型的语言,所以参数不需要加类型.函数的也不需要像c#那样要求所以路径都需要有返回值(这个不像c#语言,而且c#的方法也不需要在方法

  • javascript常用函数(2)

    文章主要内容列表: 16. 除去数组重复项 17. 操作cookie 18. 判断浏览器类型 19. 判断是否开启cookie 20. 断是否开启JavaScript 21. JavaScript 打字机效果 22. 简单打印 23. 禁止右键 24. 防止垃圾邮件 25.复制(javaeye flash版) 26. 阻止冒泡事件或阻止浏览器默认行为 27. 关闭或跳转窗口时提示 28. 用javascript获取地 址栏参数 29. 计算停留的时间 30. div为空,只有背景时,背景自动增高

  • 原生Javascript封装的一个AJAX函数分享

    最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的--但他又是基于jquery的ajax,所以离开了jquery这个函数就毫无作用了.而且我觉得,jquery的ajax方法是很完善的了,可以直接用,如果都有jquery了,那么他的ajax就不用白不用了.我缺少的是一个能在没有jquery的情况下使用的ajax方法. 所以我也花一天时间写了一个,参数与调用方法类似于jquery的ajax.就叫xhr吧,因为xhr=XMLHttpRequ

  • JavaScript截取字符串的Slice、Substring、Substr函数详解和比较

    在JavaScript中,提取子字符串主要是通过 Slice.Substring.Substr 三个方法之一. 复制代码 代码如下: // slice // 语法: string.slice(start [, stop])"Good news, everyone!".slice(5,9); // 'news' // substring // 语法: string.substring(indexA [, indexB])"Good news, everyone!".s

  • JavaScript中的函数的两种定义方式和函数变量赋值

    复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /*I总结: 1.函数名可以做变量使用,可以赋值,可以传值 2.函数名当参数,传递给另一个函数 */ //===========

随机推荐