已锁定 主题:常用JS代码实例
精华帖 (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);} |
|
返回顶楼 | |
发表时间:2009-03-15
http://www.planabc.net/
|
|
返回顶楼 | |
发表时间: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 语句。 |
|
返回顶楼 | |
发表时间:2009-03-16
不错~~~
|
|
返回顶楼 | |
发表时间: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> |
|
返回顶楼 | |
发表时间:2009-03-18
http://tool.chinaz.com/
站长工具 - 中国站长站 搜索引擎收录查询等一些功能,适合站长分析数据来用 |
|
返回顶楼 | |
发表时间:2009-03-18
使用这两个方法 实现 UNICODE编码和转换
var xx =escape('许') ; alert(xx); xx = unescape(xx); alert(xx); |
|
返回顶楼 | |
发表时间:2009-03-18
如果再多写点那就更好了,呵呵,
辛苦了,期待中。。。。。。 |
|
返回顶楼 | |
发表时间: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; } |
|
返回顶楼 | |
发表时间: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> |
|
返回顶楼 | |