论坛首页 Web前端技术论坛

常用JS代码实例

浏览 42340 次
精华帖 (2) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (18)
作者 正文
   发表时间:2009-03-15  
“The Miller Device” 的妙用


var is = {    types : ["Array","RegExp","Date","Number","String","Object"]};for(var i=0,c;c=is.types[i++];){    is[c] = (function(type){        return function(obj){            return Object.prototype.toString.call(obj) == “[object "+type+"]“;        }    })(c);}

0 请登录后投票
   发表时间:2009-03-15  
http://www.planabc.net/
0 请登录后投票
   发表时间:2009-03-15  
解决 IE6 内存泄露的另类方法

Hedger Wang 在国内 blog 上得到的方法:使用 try … finally 结构来使对象最终为 null ,以阻止内存泄露。

其中举了个例子:


function createButton() {    var obj = document.createElement("button");    obj.innerHTML = "click me";    obj.onclick = function() {        //handle onclick    }    obj.onmouseover = function() {        //handle onmouseover    }    return obj;//return a object which has memory leak problem in IE6}var dButton = document.getElementById("d1").appendChild(createButton());//skipped....





再看下用 try … finally 的解决方法:
/**     * Use the try ... finally statement to resolve the memory leak issue*/ function createButton() {    var obj = document.createElement("button");    obj.innerHTML = "click me";    obj.onclick = function() {        //handle onclick    }    obj.onmouseover = function() {        //handle onmouseover    }    //this helps to fix the memory leak issue    try {        return obj;    } finally {        obj = null;    }}var dButton = document.getElementById("d1").appendChild(createButton());//skipped....



finally 是如何解析的呢?

答案是:先执行 try 语句再执行 finally 语句。

0 请登录后投票
   发表时间:2009-03-16  
不错~~~
0 请登录后投票
   发表时间:2009-03-17  
使用JS画个椭圆


<html>
<body>
<script language="javascript">
var a = 100;
var b = 60;
for(var x=-100;x<=100;x++){
	y = Math.pow((1 - (Math.pow(x,2)/Math.pow(a,2)))*Math.pow(b,2),0.5);
	var objdiv = document.createElement("DIV");
	objdiv.style.height = 1;
	objdiv.style.width = 1;
	objdiv.style.background = "#000000";
	objdiv.style.left = x+400;
	objdiv.style.top = y+400;
	objdiv.style.position = "absolute";

	var objdiv2 = document.createElement("DIV");
	objdiv2.style.height = 1;
	objdiv2.style.width = 1;
	objdiv2.style.background = "#000000";
	objdiv2.style.left = x+400;
	objdiv2.style.top = -y+400;
	objdiv2.style.position = "absolute";

	document.body.appendChild(objdiv);
	document.body.appendChild(objdiv2);
}
</script>
</body></html>
0 请登录后投票
   发表时间:2009-03-18  
http://tool.chinaz.com/
站长工具 - 中国站长站 搜索引擎收录查询等一些功能,适合站长分析数据来用
0 请登录后投票
   发表时间:2009-03-18  
使用这两个方法 实现 UNICODE编码和转换

var xx =escape('许') ;
alert(xx);
xx = unescape(xx);
alert(xx);

0 请登录后投票
   发表时间:2009-03-18  
如果再多写点那就更好了,呵呵,
辛苦了,期待中。。。。。。
0 请登录后投票
   发表时间:2009-03-19  
这个是 咱们大名鼎鼎的信息备案网站中检查IP的JS脚本,看着很让人生气啊....

那些开发者就不会正则表达式么??? 不知道JS提供正则功能么?


^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$主要把IP每段数字分成3部分来匹配,第一段:0-199.第二段:200-249 第三段:250-255
为啥不用这个来匹配呢????

//检查数字
function numbers(num)
{
	var nubOk = "0123456789.";
	var nubStr = num;
	for(i = 0; i < nubStr.length; i++)
	{
		var un = nubStr.charAt(i);
		if(nubOk.indexOf(un) ==-1) return false;
	}
	return true;
}

 function CheckIP(a) 
{
	var va=a;	
 	if(va!="")
 	{	
		if (a.indexOf(".")==-1) 
		{
			alert("填写的IP:“"+va+"” 格式错误,正确格式为:“***.***.***.***”");		
			return 0;
		}
		if(0 == a.indexOf("."))
		{	alert("填写的IP:“"+va+"” 格式错误,正确格式为:“***.***.***.***”");
			return 0;
		}
		//判断a 中的“.”是否多于3个
		var count = 0;
		var aa = a;
		for (var i=0;i<a.length;i++) 
		{
			var j = aa.indexOf(".");
			if (j!=-1) 
			{
				count = count+1;		
			}
			aa = aa.substring(j+1,a.length);		
		}	
		if(count>3)
		{	alert("填写的IP:“"+va+"” 格式错误,正确格式为:“***.***.***.***”");
			return 0;
		}
		if(count<3)
		{	alert("填写的IP:“"+va+"” 格式错误,正确格式为:“***.***.***.***”");
			return 0;
		}
		var L=a.length;
		for(var j=0;j<4;j++)
		{
			var temp = a.indexOf('.');	
			if (temp > -1) 
			{	
				var aSub = a.substring(0,temp);	
				if(aSub>255)
				{	alert("正确的IP数字取值范围为0~255");
					return 0;
				}	
				if(aSub<0)
				{		
					alert("正确的IP数字取值范围为0~255");
					return 0;
				}
				if(0 == numbers(aSub))
				{	
					alert("填写的IP:“"+va+"”中有非数字字符");
					return 0;
				}
			}
			else
			{
				var aSub = a;
				if(aSub>255)
				{	alert("正确的IP数字取值范围为0~255");
					return 0;
				}	
				if(aSub<0)
				{	alert("正确的IP数字取值范围为0~255");
					return 0;
				}
				if(0 == numbers(aSub))
				{	alert("填写的IP:“"+va+"”中有非数字字符");
					return 0;
				}
			}
			a = a.substring(temp+1,L);	
		}
	}
	return 1;
}





这些代码岂不更好??
/**
 * 功能:检验长度是否正确
 * 参数:str 检验值,minlen 最小长度,maxlen 最大长度
 * 返回:TRUE OR FALSE
 */
function checkByteLength(str,minlen,maxlen) {
	if (str == null) return false;									//为空返回false
	var l = str.length;
	var blen = 0;
	for(i=0; i<l; i++) {										//循环取得检验值的长度
		if ((str.charCodeAt(i) & 0xff00) != 0) {
			blen ++;
		}
		blen ++;
	}
	if (blen > maxlen || blen < minlen) {							//判断长度是否合法
		return false;
	}
	return true;
}
/**
 * 功能:检验用户名是否合法
 * 参数:value 检验值
 * 返回:TRUE OR FALSE
 */
function validateUsername(value){
	var patn = /^[a-zA-Z]+[a-zA-Z0-9]+$/; 
	//var patn = /^[^\s]*$/;
	if(!checkByteLength(value,4,20)) return true;					//判断长度是否合法
	if(!patn.test(value)){										//判断格式是否合法
		return true;
	}
	return false; 
}


/**
 * 功能:检验登陆或者注册的用户名 -- 用户名称至少为4个字符,但是少于20个字符
 * 参数:value 检验值
 * 返回:TRUE OR FALSE
 */
function checkUserName(value)
{
	if(value == '')											//判断用户名是否为空,返回false
	{
		return false;
	}
	if(validateUsername(value))								//判断用户名是否合法
	{
		return false;
	}
	return true;
}


/**
 * 功能:检验Email是否合法
 * 参数:value 检验值
 * 返回:TRUE OR FALSE
 */
function validateEmail(value){
	var patn=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
	if(!patn.test(value)) return false;								//判断Email是否合法
	return true;
}
/**
 * 功能:检验Email
 * 参数:value 检验值
 * 返回:TRUE OR FALSE
 */
function CheckEmail(value)
{
	if(value == '')											//判断Email是否为空
	{
		return false;
	}
	if(!validateEmail(value))									//判断Email是否合法
	{
		return false
	}
	return true;
}

/**
 * 功能: 检验是否包含特殊字符
 * 参数:value 检验值
 * 返回:TRUE OR FALSE
 */ 
function validateSpecSymbol(value) {
 	return true ;//! /^[a-zA-Z0-9\u4E00-\u9FA5#\]*$/.test(value);
}

/**
 * 功能: 检验是否包含特殊字符
 * 参数:value 检验值
 * 返回:TRUE OR FALSE
 */

function CheckSpecSymbol(value)
{
	if(value == '')											//判断Email是否为空
	{
		return false;
	}
	if(!validateSpecSymbol(value))									//判断Email是否合法
	{
		return false ;
	}
	return true;	
} 


//判断日期是否合法
	//参数g_dateVal格式:"1980-01-01"
	function IsDate(g_dateVal){ 
		var s = g_dateVal.replace(/-/g,"/"); 
		var newdate=new Date(s); 
		var s = newdate.getYear();
		return isNAN(s);
	} 


//含有非数字字符 返回 true
	function IsNumber(s){ //适于校验非负整数
	   var reg = /^[01233456789]{1,}$/;
		if(reg.test(s))
			return true;
		else
			return false;
	}
	
	//从身份证号里面得到日期
	function getBirthdayFromIdno(IDno){
		var sBirthday;
		if(IDno.length==15){
			sBirthday = "19" + IDno.substring(6,8);
			sBirthday = sBirthday + "-" + IDno.substring(8,10);
			sBirthday = sBirthday + "-" + IDno.substring(10,12);
		}
		if(IDno.length==18){
			sBirthday = IDno.substring(6,10);
			sBirthday = sBirthday + "-" + IDno.substring(10,12);
			sBirthday = sBirthday + "-" + IDno.substring(12,14);
		}
		return sBirthday;
	}

//验证身份证号码
	function IsIdno(s){
		if (s==""){	return confirm("没有填写身份证号,这样将无法判定其生日!\n确定继续吗?");}
		if (s.length != 15 & s.length != 18){
			alert("请填入正确的身份证号码");
			return false;
		}
		if (IsNumber(s.substring(0,17))){
			alert("请填入正确的身份证号码");
			return false;
	    }
		if (IsNumber(s.substring(17,18)) & s.substring(17,18) != "x" & s.substring(17,18) != "X"){
			alert("请填入正确的身份证号码");
			return false;
		}
		return true;
	}

//去除首尾空格
	function Trim(s) {return s.replace(/(^\s+)|(\s+$)/g, "");}
	//去除全部空格	
	function TrimAll(s) {return s.replace(/\s+/g, "");}
	//去除“'”	
	function SafeInput(s) {return Trim(s.replace(/('+)/g,'’'));}	

//是否为电子邮件
	function IsEmail(s)
	{
		var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
		if(reg.test(s))
			return true;
		else
			return false;
	}
	
	//验证电话号码,只允许数字和“-”
	function IsTel(s)
	{
		var reg = /[\d|-]{7,15}/;
		if(reg.test(s))
			return true;
		else
			return false;
	}







0 请登录后投票
   发表时间:2009-03-19  
加一个IP校验的JS代码[简单的东西能省就省啊] -- 使用正则 ... 带调试UI



<script>
function ipvalidator(ip){
    var ve = 'iamsese.cn';
    var patn = /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/;
    $ = document.getElementById('rs') ;
    $.innerHTML = $.innerHTML + (ip + ':' + patn.test(ip) + "<br/>") ;    
}
</script>
<style>
#layout{width: 300px;height:200px;    float:right;}
#rs {overflow: auto;height:160px;background:gray;color:white;}
</style>
<div id='layout'>
    <span><input type='text' id='ip' value='192.168.0.1'></span>
    <a href='#' onclick='ipvalidator(document.getElementById("ip").value)'>校验</a>
    <div id='rs'></div>
</div>





0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics