【JavaScript】常用JS

js不常用但实用的JavaScript超级技巧 JavaScript 是一种应用场景多且功能强大的语言,对于现代 Web 开发至关重要。以下是一些超级技巧,它们将帮助你成为更高效、更有效的 JavaScript 开发人员,每个技巧都有详细的解释和示例。提示:以下是本篇文章正文内容,下面案例可供参考。 阅读详情
帐号不能含有中文js
日期:2006-1-3 21:50:36 

<script language="JavaScript">
function start(){
 MM_preloadImages('images/bmail_index_22_02_over.gif')
 document.free.username.focus();
 return true;
}
function checkform(){
  if(document.free.username.value=="")
  {
   alert("请输入您的帐号");
 document.free.username.focus();
 return false;
  }
  if(/[^\x00-\xff]/.test(document.free.username.value))
  {
   alert("帐号不能含有中文!");
 document.free.username.focus();
 return false;
  }
  if(document.free.password.value=="")
  {
   alert("请输入您的密码");
 document.free.password.focus();
 return false;
  }
  return true;
}
</script>



关闭窗口 
<input type=button name=ss value=关闭窗口onclick="javascript:indow.opener.location.reload();window.close();"> 

刷新父窗口;并关闭子窗口

<script>window.opener.location.reload();window.close();</script> 
JS页面打印
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
<center class="Noprint" >
<p>
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)> 
<input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)>
</p>
<p> <input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>
<br/>
</p>
<hr align="center" width="90%" size="1" noshade>
</center>

一些常用的js脚本

日期:2006-1-1 16:56:00 人气:0     [大 中 小]



1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)><td>no</table> 可用于Table

2. <body onselectstart="return false"> 取消选取、防止复制

3. onpaste="return false" 不准粘贴

4. oncopy="return false;" oncut="return false;" 防止复制

5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标

6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标

7. <input style="ime-mode:disabled"> 关闭输入法

8. 永远都会带着框架
<script language="JavaScript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// --></script>

9. 防止被人frame
<SCRIPT LANGUAGE=JAVASCRIPT><!-- 
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>

10. <noscript><iframe src=*.html></iframe></noscript> 网页将不能被另存为

11. <input type=button value=查看网页源代码 
onclick="window.location = 'view-source:'+ 'http://www.youkuaiyun.com/'">

12. 怎样通过asp的手段来检查来访者是否用了代理
<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
response.write "<font color=#FF0000>您通过了代理服务器,"& _
"真实的IP为"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
end if
%>

13. 取得控件的绝对位置

//Javascript
<script language="Javascript">
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent)
alert("top="+t+"\nleft="+l);
}
</script>

//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
--></script>

14. 光标是停在文本框文字的最后
<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart('character',e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">

15. 判断上一页的来源
asp:
request.servervariables("HTTP_REFERER")

java script:
document.referrer

16. 最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"> 
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"> 
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" VALUE="Close"></OBJECT>

<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE

17. 
<%
'定义数据库连接的一些常量
Const adOpenForwardOnly = 0 '游标只向前浏览记录,不支持分页、Recordset、BookMark
Const adOpenKeyset = 1 '键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
Const adOpenDynamic = 2 '动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览(ACCESS不支持)。
Const adOpenStatic = 3 '静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动

Const adLockReadOnly = 1 '锁定类型,默认的,只读,不能作任何修改
Const adLockPessimistic = 2 '当编辑时立即锁定记录,最安全的方式
Const adLockOptimistic = 3 '只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
Const adLockBatchOptimistic = 4 '当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的

Const adCmdText = &H0001
Const adCmdTable = &H0002
%>

18. 网页不会被缓存
HTM网页
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
ASP网页
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"
PHP网页
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

怎样让表单没有凹凸感?
<input type=text style="border:1 solid #000000"> 
或
<input type=text style="border-left:none; border-right:none; border-top:none; border-bottom: 1 solid #000000"></textarea>

<div><span>&<layer>的区别? 
<div>(division)用来定义大段的页面元素,会产生转行 
<span>用来定义同一行内的元素,跟<div>的唯一区别是不产生转行 
<layer>是ns的标记,ie不支持,相当于<div>


让弹出窗口总是在最上面:
<body onblur="this.focus();">

不要滚动条? 
让竖条没有: 
<body style='overflow:scroll;overflow-y:hidden'> 
</body> 
让横条没有: 
<body style='overflow:scroll;overflow-x:hidden'> 
</body> 
两个都去掉?更简单了 
<body scroll="no"> 
</body> 

怎样去掉图片链接点击后,图片周围的虚线?
<a href="#" onFocus="this.blur()"><img src="logo.jpg" border=0></a>

电子邮件处理提交表单
<form name="form1" method="post" action="mailto:****@***.com" enctype="text/plain"> 
<input type=submit>
</form>

在打开的子窗口刷新父窗口的代码里如何写?
window.opener.location.reload()

如何设定打开页面的大小
<body onload="top.resizeTo(300,200);">

在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动 
<html><head> 
<STYLE> 
body 
{background-image:url(logo.gif); background-repeat:no-repeat; background-position:center } 
</STYLE> 
</head> 
<body bgproperties="fixed" > 
</body> 
</html> 

19. 检查一段字符串是否全由数字组成
<script language="Javascript"><!--
function checkNum(str){return str.match(/\D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></script>

20. 获得一个窗口的大小
document.body.clientWidth,document.body.clientHeight

21. 怎么判断是否是字符
if (/[^\x00-\xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");

22.TEXTAREA自适应文字行数的多少
<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>

23. 日期减去天数等于第二个日期
<script language=Javascript>
function cc(dd,dadd)
{
//可以加上错误处理
var a = new Date(dd)
a = a.valueOf()
a = a - dadd * 24 * 60 * 60 * 1000
a = new Date(a)
alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")
}
cc("12/23/2002",2)
</script>

24. 选择了哪一个Radio
<HTML><script language="vbscript">
function checkme()
for each ob in radio1
if ob.checked then window.alert ob.value
next
end function
</script><BODY>
<INPUT name="radio1" type="radio" value="style" checked>Style
<INPUT name="radio1" type="radio" value="barcode">Barcode
<INPUT type="button" value="check" onclick="checkme()">
</BODY></HTML>

25.获得本页url的request.servervariables("")集合
Response.Write "<TABLE border=1><!-- Table Header --><TR><TD><B>Variables</B></TD><TD><B>Value</B></TD></TR>"
for each ob in Request.ServerVariables
Response.Write "<TR><TD>"&ob&"</TD><TD>"&Request.ServerVariables(ob)&"</TD></TR>"
next
Response.Write "</TABLE>"

26.
本机ip<%=request.servervariables("remote_addr")%>
服务器名<%=Request.ServerVariables("SERVER_NAME")%>
服务器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
服务器端口<%=Request.ServerVariables("SERVER_PORT")%>
服务器时间<%=now%>
IIS版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>
脚本超时时间<%=Server.ScriptTimeout%>
本文件路径<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
服务器CPU数量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
服务器解译引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>
服务器操作系统<%=Request.ServerVariables("OS")%>

27.ENTER键可以让光标移到下一个输入框
<input onkeydown="if(event.keyCode==13)event.keyCode=9">

28. 检测某个网站的链接速度:
把如下代码加入<body>区域中:
<script language=Javascript>
tim=1
setInterval("tim++",100)
b=1

var autourl=new Array()
autourl[1]="www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]="www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]="www.cctv.com"

function butt(){
document.write("<form name=autof>")
for(var i=1;i<autourl.length;i++)
document.write("<input type=text name=txt"+i+" size=10 value=测试中……> =》<input type=text name=url"+i+" size=40> =》<input type=button value=GO onclick=window.open(this.form.url"+i+".value)><br>")
document.write("<input type=submit value=刷新></form>")
}
butt()
function auto(url)
else

b++
}
function run(){for(var i=1;i<autourl.length;i++)document.write("<img src=http://"+autourl[i]+"/"+Math.random()+" width=1 height=1 onerror=auto('http://"+autourl[i]+"')>")}
run()</script>

29. 各种样式的光标
auto :标准光标
default :标准箭头
hand :手形光标
wait :等待光标
text :I形光标
vertical-text :水平I形光标
no-drop :不可拖动光标
not-allowed :无效光标
help :?帮助光标
all-scroll :三角方向标
move :移动标
crosshair :十字标
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize


JavaScript表单验证
日期:2005-12-26 2:56:19 

以下是引用片段:
<script language = javascript>
function test(){
if (document.sub.uname.value.length<4){
  alert("姓名最小长度为4!");
  document.sub.uname.select();
  return false;
  }
if(/[^A-Za-z0-9_]/.exec(document.sub.uname.value)!=null)
  {
  alert("姓名只能由数字、字母、下划线组成!");
  document.sub.uname.select();
  return false;
  }      
if (/[\s]/.exec(document.sub.upsw.value)!=null) {
  alert("密码不能含有空白字符!");
  document.sub.upsw.focus();
  return false;
}
if (document.sub.upsw.value.length <4) {
  alert("密码最小长度为4!");
  document.sub.upsw.focus();
  return false;
}
if (document.sub.upswd.value.length == 0) {
  alert("请输入您的确认密码!");
  document.sub.upswd.focus();
  return false;
}
if (document.sub.upswd.value!=document.sub.upsw.value ) {
  alert("您的密码与确认密码不匹配请从新输入!");
  document.sub.upswd.focus();
  return false;
}
if(document.sub.uemail.value.length !=0){
  if(/@/.exec(document.sub.uemail.value)==null){
  alert("请注意E-Mail的正确形式!");
   document.sub.uemail.select();
   return false;
  } 
}
if (isNaN(document.sub.uqq.value)){
alert("QQ需为数字形式!");
  document.sub.uqq.select();
  return false; 
} 
return true;
} 
</script>


javascript 常用代码大全 
 
以下是引用片段:

javascript 常用代码大全

digits[Number(d)] + decimals[i]; 
} 
} 
} 

 
// Confirm and return the final output string: 
if (outputCharacters == "") 
{ 
outputCharacters = CN_ZERO + CN_DOLLAR; 
} 
if (decimal == "") 
{ 
outputCharacters += CN_INTEGER; 
} 

 

outputCharacters = CN_SYMBOL + outputCharacters; 
return outputCharacters; 
} 

 
Number.prototype.toImage = function() 
{ 
var num = Array( 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0xF,0x5,0x5,0x5,0xF}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0x4,0x4,0x4,0x4,0x4}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0xF,0x4,0xF,0x1,0xF}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0xF,0x4,0xF,0x4,0xF}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0x5,0x5,0xF,0x4,0x4}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0xF,0x1,0xF,0x4,0xF}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0xF,0x1,0xF,0x5,0xF}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0xF,0x4,0x4,0x4,0x4}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0xF,0x5,0xF,0x5,0xF}", 
"#define t_width 3\n#define t_height 5\nstatic char t_bits[] = {0xF,0x5,0xF,0x4,0xF}" 
); 

 

var str = this + ""; 
var iIndex 
var result="" 
for(iIndex=0;iIndex<str.length;iIndex++) 
{ 
result +="<img src='javascript:" & num(iIndex) & "'"> 
} 
return result; 
} 

 
/* 
****************************************** 
其他函数扩充 
****************************************** 
*/ 

/* 
=========================================== 
//验证类函数 
=========================================== 
*/ 
function IsEmpty(obj) 
{ 
    obj=document.getElementsByName(obj).item(0); 
    if(Trim(obj.value)=="") 
    { 
      
        if(obj.disabled==false && obj.readOnly==false) 
        { 
            obj.focus(); 
        } 
return true; 
    } 
else 
{ 
return false; 
} 
} 

 

/* 
=========================================== 
//无模式提示对话框 
=========================================== 
*/ 
function modelessAlert(Msg) 
{ 
   window.showModelessDialog("javascript:alert(\""+escape(Msg)+"\");window.close();","","status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;"); 
} 

 /* 
=========================================== 
//页面里回车到下一控件的焦点 
=========================================== 
*/ 
function Enter2Tab() 
{ 
var e = document.activeElement; 
if(e.tagName == "INPUT" && 
( 
e.type == "text"     || 
e.type == "password" || 
e.type == "checkbox" || 
e.type == "radio" 
)   || 
e.tagName == "SELECT") 

 { 
if(window.event.keyCode == 13) 
{ 
    window.event.keyCode = 9; 
} 
} 
} 
////////打开此功能请取消下行注释 
//document.onkeydown = Enter2Tab; 

 
function ViewSource(url) 
{ 
window.location = 'view-source:'+ url; 
} 

 

///////禁止右键 
document.oncontextmenu = function() { return false;} 

 
/* 
****************************************** 
字符串函数扩充 
****************************************** 
*/ 

 

/* 
=========================================== 
//去除左边的空格 
=========================================== 
 

*/ 
String.prototype.LTrim = function() 
{ 
return this.replace(/(^ *)/g, ""); 
} 

 String.prototype.Mid = function(start,len) 
{ 
if(isNaN(start)&&start<0) 
{ 
return ""; 
} 

if(isNaN(len)&&len<0) 
{ 
return ""; 
} 

 return this.substring(start,len); 
} 

 


/* 
=========================================== 
//去除右边的空格 
=========================================== 
*/ 
String.prototype.Rtrim = function() 
{ 
return this.replace(/( *$)/g, ""); 
} 

 /* 
=========================================== 
//去除前后空格 
=========================================== 
*/ 
String.prototype.Trim = function() 
{ 
return this.replace(/(^ *)|( *$)/g, ""); 
} 
/* 
=========================================== 
//得到左边的字符串 
=========================================== 
*/ 
String.prototype.Left = function(len) 
{ 

 if(isNaN(len)||len==null) 
{ 
len = this.length; 
} 
else 
{ 
if(parseInt(len)<0||parseInt(len)>this.length) 
{ 
len = this.length; 
} 
} 

return this.substring(0,len); 
} 

 
/* 
=========================================== 
//得到右边的字符串 
=========================================== 
*/ 
String.prototype.Right = function(len) 
{ 

 if(isNaN(len)||len==null) 
{ 
len = this.length; 
} 
else 
{ 
if(parseInt(len)<0||parseInt(len)>this.length) 
{ 
len = this.length; 
} 
} 

 

return this.substring(this.length-len,this.length); 
} 

 


/* 
=========================================== 
//得到中间的字符串,注意从0开始 
=========================================== 
*/ 
String.prototype.Mid = function(start,len) 
{ 
if(isNaN(start)||start==null) 
{ 
start = 0; 
} 
else 
{ 
if(parseInt(start)<0) 
{ 
start = 0; 
} 
} 

 

if(isNaN(len)||len==null) 
{ 
len = this.length; 
} 
else 
{ 
if(parseInt(len)<0) 
{ 
len = this.length; 
} 
} 

 

return this.substring(start,start+len); 
} 

 


/* 
=========================================== 
//在字符串里查找另一字符串:位置从0开始 
=========================================== 
*/ 
String.prototype.InStr = function(str) 
{ 

 

if(str==null) 
{ 
str = ""; 
} 

 

return this.indexOf(str); 
} 

 

/* 
=========================================== 
//在字符串里反向查找另一字符串:位置0开始 
=========================================== 
*/ 
String.prototype.InStrRev = function(str) 
{ 

 

if(str==null) 
{ 
str = ""; 
} 

 

return this.lastIndexOf(str); 
} 

 

 

 

/* 
=========================================== 
//计算字符串打印长度 
=========================================== 
*/ 
String.prototype.LengthW = function() 
{ 
return this.replace(/[^\x00-\xff]/g,"**").length; 
} 

 

/* 
=========================================== 
//是否是正确的IP地址 
=========================================== 
*/ 
String.prototype.isIP = function() 
{ 

 

var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;

 

if (reSpaceCheck.test(this)) 
{ 
this.match(reSpaceCheck); 
if (RegExp.$1 <= 255 && RegExp.$1 >= 0 
 && RegExp.$2 <= 255 && RegExp.$2 >= 0 
 && RegExp.$3 <= 255 && RegExp.$3 >= 0 
 && RegExp.$4 <= 255 && RegExp.$4 >= 0) 
{ 
return true;     
} 
else 
{ 
return false; 
} 
} 
else 
{ 
return false; 
} 
   
} 

 

 

 

 

/* 
=========================================== 
//是否是正确的长日期 
=========================================== 
*/ 
String.prototype.isDate = function() 
{ 
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/); 
if(r==null) 
{ 
return false; 
} 
var d = new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); 

 

}

 

/* 
=========================================== 
//是否是手机 
=========================================== 
*/ 
String.prototype.isMobile = function() 
{ 
return /^0{0,1}13[0-9]{9}$/.test(this); 
} 

 

/* 
=========================================== 
//是否是邮件 
=========================================== 
*/ 
String.prototype.isEmail = function() 
{ 
return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(this); 
} 

 

/* 
=========================================== 
//是否是邮编(中国) 
=========================================== 
*/ 

 

String.prototype.isZipCode = function() 
{ 
return /^[\\d]{6}$/.test(this); 
} 

 

/* 
=========================================== 
//是否是有汉字 
=========================================== 
*/ 
String.prototype.existChinese = function() 
{ 
//[\u4E00-\u9FA5]為漢字﹐[\uFE30-\uFFA0]為全角符號 
return /^[\x00-\xff]*$/.test(this); 
} 

 

/* 
=========================================== 
//是否是合法的文件名/目录名 
=========================================== 
*/ 
String.prototype.isFileName = function() 
{ 
return !/[\\\/\*\?\|:"<>]/g.test(this); 
} 

 

/* 
=========================================== 
//是否是有效链接 
=========================================== 
*/ 
String.Prototype.isUrl = function() 
{ 
return /^http:\/\/([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$/.test(this); 
} 

 

/* 
=========================================== 
//是否是有效的身份证(中国) 
=========================================== 
*/ 
String.prototype.isIDCard = function() 
{ 
var iSum=0; 
var info=""; 
var sId = this; 

 

var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};

 

if(!/^\d{17}(\d|x)$/i.test(sId)) 
{ 
return false; 
} 
sId=sId.replace(/x$/i,"a"); 
//非法地区 
if(aCity[parseInt(sId.substr(0,2))]==null) 
{ 
return false; 
} 

 

var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));

 

var d=new Date(sBirthday.replace(/-/g,"/"))

 

//非法生日 
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate())) 
{ 
return false; 
} 
for(var i = 17;i>=0;i--) 
{ 
iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11); 
} 

 

if(iSum%11!=1) 
{ 
return false; 
} 
return true; 

 

}

 

/* 
=========================================== 
//是否是有效的电话号码(中国) 
=========================================== 
*/ 
String.prototype.isPhoneCall = function() 
{ 
return /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/.test(this); 
} 

 


/* 
=========================================== 
//是否是数字 
=========================================== 
*/ 
String.prototype.isNumeric = function(flag) 
{ 
//验证是否是数字 
if(isNaN(this)) 
{ 

 

return false; 
} 

 

switch(flag) 
{ 

 

case null://数字 
case "": 
return true; 
case "+"://正数 
return/(^\+?|^\d?)\d*\.?\d+$/.test(this); 
case "-"://负数 
return/^-\d*\.?\d+$/.test(this); 
case "i"://整数 
return/(^-?|^\+?|\d)\d+$/.test(this); 
case "+i"://正整数 
return/(^\d+$)|(^\+?\d+$)/.test(this); 
case "-i"://负整数 
return/^[-]\d+$/.test(this); 
case "f"://浮点数 
return/(^-?|^\+?|^\d?)\d*\.\d+$/.test(this); 
case "+f"://正浮点数 
return/(^\+?|^\d?)\d*\.\d+$/.test(this); 
case "-f"://负浮点数 
return/^[-]\d*\.\d$/.test(this); 
default://缺省 
return true; 
} 
} 

 


/* 
=========================================== 
//转换成全角 
=========================================== 
*/ 
String.prototype.toCase = function() 
{ 
var tmp = ""; 
for(var i=0;i<this.length;i++) 
{ 
if(this.charCodeAt(i)>0&&this.charCodeAt(i)<255) 
{ 
tmp += String.fromCharCode(this.charCodeAt(i)+65248); 
} 
else 
{ 
tmp += String.fromCharCode(this.charCodeAt(i)); 
} 
} 
return tmp 
} 

 

/* 
=========================================== 
//对字符串进行Html编码 
=========================================== 
*/ 
String.prototype.toHtmlEncode = function 
{ 
var str = this; 

 

str=str.replace("&","&"); 
str=str.replace("<","<"); 
str=str.replace(">",">"); 
str=str.replace("'","'"); 
str=str.replace("\"","""); 

 

return str; 
} 

 

 

qqdao(青青岛) 
  
  
  精心整理的输入判断js函数 

 

关键词:字符串判断,字符串处理,字串判断,字串处理

 


//'********************************************************* 
// ' Purpose: 判断输入是否为整数字 
// ' Inputs:   String 
// ' Returns:  True, False 
//'********************************************************* 
function onlynumber(str) 
{ 
    var i,strlength,tempchar; 
    str=CStr(str); 
   if(str=="") return false; 
    strlength=str.length; 
    for(i=0;i<strlength;i++) 
    { 
        tempchar=str.substring(i,i+1); 
        if(!(tempchar==0||tempchar==1||tempchar==2||tempchar==3||tempchar==4||tempchar==5||tempchar==6||tempchar==7||tempchar==8||tempchar==9)) 
        { 
        alert("只能输入数字 "); 
        return false; 
        } 
    } 
    return true; 
} 
//'********************************************************* 

 


//'********************************************************* 
// ' Purpose: 判断输入是否为数值(包括小数点) 
// ' Inputs:   String 
// ' Returns:  True, False 
//'********************************************************* 
function IsFloat(str) 
{ var tmp; 
   var temp; 
   var i; 
   tmp =str; 
if(str=="") return false;  
for(i=0;i<tmp.length;i++) 
{temp=tmp.substring(i,i+1); 
if((temp>='0'&& temp<='9')||(temp=='.')){} //check input in 0-9 and '.' 
else   { return false;} 
} 
return true; 
} 

 

 

 

//'********************************************************* 
// ' Purpose: 判断输入是否为电话号码 
// ' Inputs:   String 
// ' Returns:  True, False 
//'********************************************************* 
function isphonenumber(str) 
{ 
   var i,strlengh,tempchar; 
   str=CStr(str); 
   if(str=="") return false; 
   strlength=str.length; 
   for(i=0;i<strlength;i++) 
   { 
        tempchar=str.substring(i,i+1); 
        if(!(tempchar==0||tempchar==1||tempchar==2||tempchar==3||tempchar==4||tempchar==5||tempchar==6||tempchar==7||tempchar==8||tempchar==9||tempchar=='-')) 
        { 
        alert("电话号码只能输入数字和中划线 "); 
        return(false); 
        }    
   } 
   return(true); 
} 
//'********************************************************* 

 

//'********************************************************* 
// ' Purpose: 判断输入是否为Email 
// ' Inputs:   String 
// ' Returns:  True, False 
//'********************************************************* 
function isemail(str) 
{ 
    var bflag=true 
        
    if (str.indexOf("'")!=-1) { 
        bflag=false 
    } 
    if (str.indexOf("@")==-1) { 
        bflag=false 
    } 
    else if(str.charAt(0)=="@"){ 
            bflag=false 
    } 
    return bflag 
} 

 

//'********************************************************* 
// ' Purpose: 判断输入是否含有为中文 
// ' Inputs:   String 
// ' Returns:  True, False 
//'********************************************************* 
function IsChinese(str)  
{ 
if(escape(str).indexOf("%u")!=-1) 
  { 
    return true; 
  } 
    return false; 
} 
//'********************************************************* 

 


//'********************************************************* 
// ' Purpose: 判断输入是否含有空格 
// ' Inputs:   String 
// ' Returns:  True, False 
//'********************************************************* 
function checkblank(str) 
{ 
var strlength; 
var k; 
var ch; 
strlength=str.length; 
for(k=0;k<=strlength;k++) 
  { 
     ch=str.substring(k,k+1); 
     if(ch==" ") 
      { 
      alert("对不起 不能输入空格 ");  
      return false; 
      } 
  } 
return true; 
} 
//'********************************************************* 

 

 

 

                                        
//'********************************************************* 
// ' Purpose: 去掉Str两边空格 
// ' Inputs:   Str 
// ' Returns:  去掉两边空格的Str 
//'********************************************************* 
function trim(str) 
{ 
    var i,strlength,t,chartemp,returnstr; 
    str=CStr(str); 
    strlength=str.length; 
    t=str; 
    for(i=0;i<strlength;i++) 
    { 
        chartemp=str.substring(i,i+1);    
        if(chartemp==" ") 
        { 
            t=str.substring(i+1,strlength); 
        } 
        else 
        { 
               break; 
        } 
    } 
    returnstr=t; 
    strlength=t.length; 
    for(i=strlength;i>=0;i--) 
    { 
        chartemp=t.substring(i,i-1); 
        if(chartemp==" ") 
        { 
            returnstr=t.substring(i-1,0); 
        } 
        else 
        { 
            break; 
        } 
    } 
    return (returnstr); 
} 

 

//'*********************************************************

 


//'********************************************************* 
// ' Purpose: 将数值类型转化为String 
// ' Inputs:   int 
// ' Returns:  String 
//'********************************************************* 
function CStr(inp) 
{ 
    return(""+inp+""); 
} 
//'********************************************************* 

 


//'********************************************************* 
// ' Purpose: 去除不合法字符,   ' " < > 
// ' Inputs:   String 
// ' Returns:  String 
//'********************************************************* 
function Rep(str) 
{var str1; 
str1=str; 
str1=replace(str1,"'","`",1,0); 
str1=replace(str1,'"',"`",1,0); 
str1=replace(str1,"<","(",1,0); 
str1=replace(str1,">",")",1,0); 
return str1; 
} 
//'********************************************************* 

 

//'********************************************************* 
// ' Purpose: 替代字符 
// ' Inputs:   目标String,欲替代的字符,替代成为字符串,大小写是否敏感,是否整字代替 
// ' Returns:  String 
//'********************************************************* 
function replace(target,oldTerm,newTerm,caseSens,wordOnly) 
{ var wk ; 
  var ind = 0; 
  var next = 0; 
  wk=CStr(target); 
  if (!caseSens) 
   { 
      oldTerm = oldTerm.toLowerCase();    
      wk = target.toLowerCase(); 
    } 
  while ((ind = wk.indexOf(oldTerm,next)) >= 0) 
  {  
         if (wordOnly)  
              { 
                  var before = ind - 1;     
                var after = ind + oldTerm.length; 
                  if (!(space(wk.charAt(before)) && space(wk.charAt(after)))) 
                    { 
                      next = ind + oldTerm.length;     
                       continue;      
                   } 
          } 
     target = target.substring(0,ind) + newTerm + target.substring(ind+oldTerm.length,target.length); 
     wk = wk.substring(0,ind) + newTerm + wk.substring(ind+oldTerm.length,wk.length); 
     next = ind + newTerm.length;    
     if (next >= wk.length) { break; } 
  } 
  return target; 
} 
//'********************************************************* 
  

 

 

几个判断,并强制设置焦点: 
//+------------------------------------ 
// trim     去除字符串两端的空格 
String.prototype.trim=function(){return this.replace(/(^ *)|( *$)/g,"")} 
//------------------------------------- 

 

// avoidDeadLock 避免设置焦点死循环问题 
// 起死原因:以文本框为例,当一个文本框的输入不符合条件时,这时,鼠标点击另一个文本框,触发第一个文本框的离开事件 
//   ,产生设置焦点动作。现在产生了第二个文本框的离开事件,因此也要设置第二个文本框的焦点,造成死锁。 
// 解决方案:设置一个全局对象[key],记录当前触发事件的对象,若其符合条件,则释放该key;若其仍不符合,则key还是指 
//   向该对象,别的对象触发不到设置焦点的语句。 
///////////////////////////////////////// 
// 文本框控制函数 
// 
///////////////////////////////////////// 
var g_Obj = null;// 记住旧的控件 
// hintFlag参数:0表示没有被别的函数调用,因此出现提示;1表示被调用,不出现警告信息 
// focusFlag参数:指示是否要设置其焦点,分情况:0表示有的可为空;1表示有的不为空 
// 避免死锁的公共部分 
//+------------------------------------ 
function textCom(obj, hintFlag) 
{ 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 
g_Obj.value = g_Obj.value.trim(); 
} 
//------------------------------------- 
// 文本框不为空 
//+------------------------------------ 
function TBNotNull(obj, hintFlag) 
{ 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 
g_Obj.value = g_Obj.value.trim(); 

 

if (g_Obj.value == "") 
{ 
if (hintFlag == 0) 
{ 
g_Obj.focus(); 
alert("内容不能为空!"); 
} 
return false; 
} 
else 
g_Obj = null; 

 

return true; 
} 
//------------------------------------- 
// 输入内容为数字 
//+------------------------------------ 
function LetNumber(obj, hintFlag, focusFlag) 
{ 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 
g_Obj.value = g_Obj.value.trim(); 

 

if ((g_Obj.value == "") || isNaN(g_Obj.value)) 
{ 
if (hintFlag == 0) 
{ 

 

g_Obj.value = ""; 
if (focusFlag == 1) 
g_Obj.focus(); 
else 
g_Obj = null; 
alert("输入的内容必须为数字!"); 
} 
return false; 
} 
else 
g_Obj = null; 

 

return true; 
} 
//------------------------------------- 
// 输入内容为整数 
//+------------------------------------ 
function LetInteger(obj, hintFlag, focusFlag) 
{ 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 
g_Obj.value = g_Obj.value.trim(); 

 

if (!/^\d*$/.test(g_Obj.value) || (g_Obj.value == "")) 
{ 
if (hintFlag == 0) 
{ 

 

g_Obj.value = ""; 
if (focusFlag == 1) 
g_Obj.focus(); 
else 
g_Obj = null; 
alert("输入的内容必须为整数!"); 
} 
return false; 
} 
else 
g_Obj = null; 

 

return true; 
} 
//------------------------------------- 
// 输入内容为字母 
//+------------------------------------ 
function LetLetter(obj, hintFlag, focusFlag) 
{ 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 

 

if (!/^[A-Za-z]*$/.test(g_Obj.value)) 
{ 
if (hintFlag == 0) 
{ 
alert("输入的内容必须为字母!"); 
g_Obj.value = ""; 
if (focusFlag == 1) 
g_Obj.focus(); 
else 
g_Obj = null; 
} 
return false; 
} 
else 
{ 
g_Obj = null; 
} 

 

return true; 
} 
//------------------------------------- 
// 内容大于某值 
//+------------------------------------ 
function LetMoreThan(obj, leftNumber, hintFlag, focusFlag) 
{ 
var ifAlert;// 是否出现警告 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 

 

g_Obj.value = g_Obj.value.trim(); 
if (g_Obj.value == "") 
ifAlert = 0; 
else 
ifAlert = 1; 

 

if ((g_Obj.value == "") || (isNaN(g_Obj.value)) || (g_Obj.value < leftNumber)) 
{ 
if (hintFlag == 0) 
{ 
g_Obj.value = ""; 
if (focusFlag == 1) 
g_Obj.focus(); 
else 
g_Obj = null; 
// 更友好的提示 
if (ifAlert == 1) 
{ 
if (leftNumber == 0) 
alert("内容必须为非负数!"); 
else 
alert("输入的内容必须" + leftNumber + "以上!"); 
} 
} 
return false; 
} 
else 
g_Obj = null; 

 

return true; 
} 
//------------------------------------- 
// 内容大于某值,整数 
//+------------------------------------ 
function LetMoreThan_Int(obj, leftNumber, hintFlag, focusFlag) 
{ 
var ifAlert;// 是否出现警告 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 
g_Obj.value = g_Obj.value.trim(); 
if (g_Obj.value == "") 
ifAlert = 0; 
else 
ifAlert = 1; 
if ((g_Obj.value == "") || (isNaN(g_Obj.value) || g_Obj.value < leftNumber) || !/^\d*$/.test(g_Obj.value)) 
{ 
if (hintFlag == 0) 
{ 
g_Obj.value = ""; 
if (focusFlag == 1) 
g_Obj.focus(); 
else 
{g_Obj = null;} 
if (ifAlert == 1)// 当用户不输入的时候,不出现提示 
{ 
// 更友好的提示 
if (leftNumber == 0) 
alert("内容必须为非负整数!"); 
else 
alert("且必须在" + leftNumber + "以上!"); 
} 
} 
return false; 
} 
else 
g_Obj = null; 

 

return true; 
} 
//------------------------------------- 
// 内容小于某值 
//+------------------------------------ 
function LetLessThan(obj, rightNumber, hintFlag, focusFlag) 
{ 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 
g_Obj.value = g_Obj.value.trim(); 

 

if ((g_Obj.value == "") || (isNaN(g_Obj.value) || g_Obj.value > rightNumber)) 
{ 
if (hintFlag == 0) 
{ 
g_Obj.value = ""; 
if (focusFlag == 1) 
g_Obj.focus(); 
else 
g_Obj = null; 
alert("输入的内容必须在" + rightNumber + "以下!"); 
} 
return false; 
} 
else 
{g_Obj = null;} 

 

return true; 
} 
//------------------------------------- 
// 内容介于两值中间 
//+------------------------------------ 
function LetMid(obj, leftNumber, rightNumber, hintFlag, focusFlag) 
{ 
var ifAlert;// 是否出现警告 
if (g_Obj == null) 
g_Obj=event.srcElement; 
else if ((g_Obj != null) && (hintFlag == 0) && (g_Obj != obj)) 
{ 
g_Obj = null; 
return; 
} 
g_Obj.value = g_Obj.value.trim(); 
if (g_Obj.value == "") 
ifAlert = 0; 
else 
ifAlert = 1; 
// 首先应该为数字 
if (LetNumber(g_Obj, 1)) 
{ 
if (!(LetMoreThan(obj,leftNumber,1,0) && LetLessThan(obj,rightNumber,1,0))) 
{ 
if (hintFlag == 0) 
{ 
g_Obj.value = ""; 
if (focusFlag == 1) 
g_Obj.focus(); 
else 
g_Obj = null; 
if (ifAlert == 1)// 当用户不输入的时候,不出现提示 
alert("输入的内容必须介于" + leftNumber + "和" + rightNumber + "之间!"); 
} 

 

return false; 
} 
else 
{g_Obj = null;} 
} 
else 
{ 
if (hintFlag == 0) 
{ 

 

g_Obj.value = ""; 
if (focusFlag == 1) 
g_Obj.focus(); 
else 
g_Obj = null; 
if (ifAlert == 1) 
alert("输入的内容必须为数字!\n" + 
"且介于" + leftNumber + "和" + rightNumber + "之间!"); 
} 

 

return false; 
} 

 

return true; 
} 
//------------------------------------- 
///////////////////////////////////////// 
// 下拉框 
///////////////////////////////////////// 
// 下拉框,务必选择 
//+------------------------------------ 
function onSelLostFocus(obj) 
{ 
if (g_Obj == null) 
{ 
g_Obj=event.srcElement; 
} 
else if ((g_Obj!=null) && (g_Obj!=obj)) 
{ 
g_Obj = null; 
return; 
} 

 

if (g_Obj.selectedIndex == 0) 
{ 
g_Obj.focus(); 
} 
else 
{ 
g_Obj = null; 
} 
} 

 


/* 
    随风JavaScript函数库 
  请把经过测试的函数加入库 
*/ 

 


/******************** 
函数名称:StrLenthByByte 
函数功能:计算字符串的字节长度,即英文算一个,中文算两个字节 
函数参数:str,为需要计算长度的字符串 
********************/ 
function StrLenthByByte(str) 
{ 
var len; 
var i; 
len = 0; 
for (i=0;i<str.length;i++) 
{ 
if (str.charCodeAt(i)>255) len+=2; else len++; 
} 
return len; 
} 

 

/******************** 
函数名称:IsEmailAddress 
函数功能:检查Email邮件地址的合法性,合法返回true,反之,返回false 
函数参数:obj,需要检查的Email邮件地址 
********************/ 
function IsEmailAddress(obj) 
{ 
var pattern=/^[a-zA-Z0-9\-]+@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3})$/; 
if(pattern.test(obj)) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
} 

 

/******************** 
函数名称:PopWindow 
函数功能:弹出新窗口 
函数参数:pageUrl,新窗口地址;WinWidth,窗口的宽;WinHeight,窗口的高 
********************/ 
function PopWindow(pageUrl,WinWidth,WinHeight) 
{ 
var popwin=window.open(pageUrl,"PopWin","scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,width="+WinWidth+",height="+WinHeight); 
return false; 
} 

 

/******************** 
函数名称:PopRemoteWindow 
函数功能:弹出可以控制父窗体的原程窗口 
函数参数:pageUrl,新窗口地址; 
调用方法:打开窗口:<a href="javascript:popRemoteWindow(url);">Open</a> 
          控制父窗体:opener.location=url;当然还可以有其他的控制 
********************/ 
function PopRemoteWindow(pageUrl) 
{ 
var remote=window.open(url,"RemoteWindow","scrollbars=yes,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,resizable=yes"); 
if(remote.opener==null) 
{ 
remote.opener=window; 
} 
} 

 


/******************** 
函数名称:IsTelephone 
函数功能:固话,手机号码检查函数,合法返回true,反之,返回false 
函数参数:obj,待检查的号码 
检查规则: 
  (1)电话号码由数字、"("、")"和"-"构成 
  (2)电话号码为3到8位 
  (3)如果电话号码中包含有区号,那么区号为三位或四位 
  (4)区号用"("、")"或"-"和其他部分隔开 
  (5)移动电话号码为11或12位,如果为12位,那么第一位为0 
  (6)11位移动电话号码的第一位和第二位为"13" 
  (7)12位移动电话号码的第二位和第三位为"13" 
********************/ 
function IsTelephone(obj) 
{ 
var pattern=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/; 
if(pattern.test(obj)) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
} 

 

/******************** 
函数名称:IsLegality 
函数功能:检查字符串的合法性,即是否包含" '字符,包含则返回false;反之返回true 
函数参数:obj,需要检测的字符串 
********************/ 
function IsLegality(obj) 
{ 
var intCount1=obj.indexOf("\"",0); 
var intCount2=obj.indexOf("\'",0); 
if(intCount1>0 || intCount2>0) 
{ 
return false; 
} 
else 
{ 
return true; 
} 
} 

 

/******************** 
函数名称:IsNumber 
函数功能:检测字符串是否全为数字 
函数参数:str,需要检测的字符串 
********************/ 
function IsNumber(str) 
{ 
var number_chars = "1234567890"; 
var i; 
for (i=0;i<str.length;i++) 
{ 
if (number_chars.indexOf(str.charAt(i))==-1) return false; 
} 
return true; 
} 

 

/******************** 
函数名称:Trim 
函数功能:去除字符串两边的空格 
函数参数:str,需要处理的字符串 
********************/ 
function Trim(str) 
{ 
return str.replace(/(^ *)|( *$)/g, ""); 
} 

 

/******************** 
函数名称:LTrim 
函数功能:去除左边的空格 
函数参数:str,需要处理的字符串 
********************/ 
function LTrim(str) 
{ 
return str.replace(/(^ *)/g, ""); 
} 

 

/******************** 
函数名称:RTrim 
函数功能:去除右边的空格 
函数参数:str,需要处理的字符串 
********************/ 
function RTrim(str) 
{ 
 return this.replace(/( *$)/g, ""); 
} 

 

/******************** 
函数名称:IsNull 
函数功能:判断给定字符串是否为空 
函数参数:str,需要处理的字符串 
********************/ 
function IsNull(str) 
{ 
if(Trim(str)=="") 
{ 
return false; 
} 
else 
{ 
return true; 
} 
} 

 

/******************** 
函数名称:CookieEnabled 
函数功能:判断cookie是否开启 
********************/ 
function CookieEnabled() 
{ 
return (navigator.cookieEnabled)? true : false; 
} 

 


/*字符串替换方法*/ 
function StrReplace(srcString,findString,replaceString,start) 
{ 
//code 
} 

 

/*客户端HTML编码*/ 
function HtmlEncode(str) 
{ 
//code 
} 

 


/******************************************************************** 
** 
*函数功能:判断是否是闰年* 
*输入参数:数字字符串* 
*返回值:true,是闰年/false,其它* 
*调用函数:* 
** 
********************************************************************/ 
function IsLeapYear(iYear) 
{ 
if (iYear+"" == "undefined" || iYear+""== "null" || iYear+"" == "") 
return false; 

 

iYear = parseInt(iYear); 
varisValid= false; 

 

if((iYear % 4 == 0 && iYear % 100 != 0) || iYear % 400 == 0) 
isValid= true; 

 

return isValid;   
} 
/******************************************************************** 
** 
*函数功能:取出指定年、月的最后一天* 
*输入参数:年份,月份* 
*返回值:某年某月的最后一天* 
*调用函数:IsLeapYear* 
** 
********************************************************************/ 
function GetLastDay(iYear,iMonth) 
{ 
iYear = parseInt(iYear); 
iMonth = parseInt(iMonth); 

 

variDay = 31;

 

if((iMonth==4||iMonth==6||iMonth==9||iMonth==11)&&iDay == 31) 
iDay = 30; 

 

if(iMonth==2 ) 
if (IsLeapYear(iYear)) 
iDay = 29; 
else 
iDay = 28; 
 return iDay;   
} 
/******************************************************************** 
** 
*函数功能:去字符串的头空和尾空* 
*输入参数:字符串* 
*返回值:字符串/null如果输入字符串不正确* 
*调用函数:TrimLeft() 和 TrimRight()* 
** 
********************************************************************/ 
function Trim( str ) 
{ 
varresultStr =""; 

 

resultStr =TrimLeft(str); 
resultStr =TrimRight(resultStr); 

 

return resultStr; 
} 

 

/******************************************************************** 
** 
*函数功能:去字符串的头空* 
*输入参数:字符串* 
*返回值:字符串/null如果输入字符串不正确* 
*调用函数:* 
** 
********************************************************************/ 
function TrimLeft( str ) 
{ 
varresultStr =""; 
vari =len= 0; 

 

if (str+"" == "undefined" || str ==null) 
return null; 

 

str+= "";

 

if (str.length == 0) 
resultStr =""; 
else 
{ 
len= str.length; 

 

while ((i <= len) && (str.charAt(i)== " ")) 
i++; 

 

resultStr =str.substring(i, len); 
} 

 

return resultStr; 
} 

 

/******************************************************************** 
** 
*函数功能:去字符串的尾空* 
*输入参数:字符串* 
*返回值:字符串/null如果输入字符串不正确* 
*调用函数:* 
** 
********************************************************************/ 
function TrimRight(str) 
{ 
varresultStr =""; 
vari =0; 

 

if (str+"" == "undefined" || str ==null) 
return null; 

 

str+= "";

 

if (str.length == 0) 
resultStr =""; 
else 
{ 
i =str.length - 1; 
while ((i >= 0)&& (str.charAt(i) == " ")) 
i--; 

 

resultStr =str.substring(0, i + 1); 
} 

 

return resultStr; 
} 

 

/******************************************************************** 
** 
*函数功能:判断输入的字符串是否为数字* 
*输入参数:输入的对象* 
*返回值:true-数字/false-非数字* 
*调用函数:* 
** 
********************************************************************/ 
function isNumber(objName) 
{ 
var strNumber = objName.value; 
var intNumber; 

 

if(Trim(strNumber) == "") 
{ 
return true; 
} 

 

intNumber = parseInt(strNumber, 10); 
if (isNaN(intNumber)) 
{ 
alert("请输入数字."); 
objName.focus(); 
return false; 
} 
return true; 
} 

 

/******************************************************************** 
** 
*函数功能:判断输入的字符串是否为数字* 
*输入参数:输入的对象* 
*返回值:true-数字/false-非数字* 
*调用函数:* 
** 
********************************************************************/ 
function isFloat(objName) 
{ 
var strFloat = objName.value; 
var intFloat; 

 

if(Trim(strFloat) == "") 
{ 
return true; 
} 

 

intFloat = parseFloat(strFloat); 
if (isNaN(intFloat)) 
{ 
alert("Please input a number."); 
objName.focus(); 
return false; 
} 
return true; 
} 

 

}

 


/******************************************************************** 
** 
*函数功能:判断输入的字符串是否为合法的时间* 
*输入参数:输入的字符串* 
*返回值:true-合法的时间/false-非法的时间* 
*调用函数:* 
** 
********************************************************************/ 
function checkDate(strDate) 
{ 
var strDateArray; 
var strDay; 
var strMonth; 
var strYear; 
var intday; 
var intMonth; 
var intYear; 
var strSeparator = "-"; 
var err = 0; 

 

strDateArray = strDate.split(strSeparator);

 

if (strDateArray.length != 3) 
{ 
err = 1; 
return false; 
} 
else 
{ 
strYear = strDateArray[0]; 
strMonth = strDateArray[1]; 
strDay = strDateArray[2]; 
} 

 

intday = parseInt(strDay, 10); 
if (isNaN(intday)) 
{ 
err = 2; 
return false; 
} 
intMonth = parseInt(strMonth, 10); 
if (isNaN(intMonth)) 
{ 
        err = 3; 
return false; 
} 
intYear = parseInt(strYear, 10); 
if(strYear.length != 4) 
{ 
return false; 
} 
if (isNaN(intYear)) 
{ 
err = 4; 
return false; 
} 

 


if (intMonth>12 || intMonth<1) 
{ 
err = 5; 
return false; 
} 

 

if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) 
{ 
err = 6; 
return false; 
} 

 

if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) 
{ 
err = 7; 
return false; 
} 

 

if (intMonth == 2) 
{ 
if (intday < 1) 
{ 
err = 8; 
return false; 
} 

 

if (LeapYear(intYear) == true) 
{ 
if (intday > 29) 
{ 
err = 9; 
return false; 
} 
} 
else 
{ 
if (intday > 28) 
{ 
err = 10; 
return false; 
} 
} 
} 

 

return true; 
} 

 

/******************************************************************** 
** 
*函数功能:判断是否为闰年* 
*输入参数:输入的年* 
*返回值:true-是/false-不是* 
*调用函数:* 
** 
********************************************************************/ 
function LeapYear(intYear) 
{ 
if (intYear % 100 == 0) 
{ 
if (intYear % 400 == 0) { return true; } 
} 
else 
{ 
if ((intYear % 4) == 0) { return true; } 
} 
return false; 
} 

 

/******************************************************************** 
*函数功能:* 
********************************************************************/ 
function formDateCheck(year,month,day) 
{ 
var strY = Trim(year); 
var strM = Trim(month); 
var strD = Trim(day); 
var strDate = strY + "-" + strM + "-" + strD; 
if((strY + strM + strD) != "") 
{ 
if(!checkDate(strDate)) 
{ 
return false; 
} 
} 
return true; 
} 

 

/******************************************************************** 
*函数功能:将form所有输入字段重置* 
********************************************************************/ 
function setFormReset(objForm) 
{ 
objForm.reset(); 
} 
/******************************************************************** 
*函数功能:计算字符串的实际长度* 
********************************************************************/ 

 

function strlen(str) 
{ 
var len; 
var i; 
len = 0; 
for (i=0;i<str.length;i++) 
{ 
if (str.charCodeAt(i)>255) len+=2; else len++; 
} 
return len; 
} 
/******************************************************************** 
*函数功能:判断输入的字符串是不是中文* 
********************************************************************/ 

 


function isCharsInBag (s, bag) 
{ 
var i,c; 
for (i = 0; i < s.length; i++) 
{ 
c = s.charAt(i);//字符串s中的字符 
if (bag.indexOf(c) > -1) 
return c; 
} 
return ""; 
} 

 

function ischinese(s) 
{ 
var errorChar; 
var badChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789><,[]{}?/+=|\'\":;~!#$%()`"; 
errorChar = isCharsInBag( s, badChar) 
if (errorChar != "" ) 
{ 
//alert("请重新输入中文\n"); 
return false; 
} 

 

return true; 
} 

 

/******************************************************************** 
*函数功能:判断输入的字符串是不是英文* 
********************************************************************/ 

 


function isCharsInBagEn (s, bag) 
{ 
var i,c; 
for (i = 0; i < s.length; i++) 
{ 
c = s.charAt(i);//字符串s中的字符 
if (bag.indexOf(c) <0) 
return c; 
} 
return ""; 
} 

 

function isenglish(s) 
{ 
var errorChar; 
var badChar = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
errorChar = isCharsInBagEn( s, badChar) 
if (errorChar != "" ) 
{ 
//alert("请重新输入英文\n"); 
return false; 
} 

 

return true; 
} 
function isnum(s) 
{ 
var errorChar; 
var badChar = "0123456789"; 
errorChar = isCharsInBagEn( s, badChar) 
if (errorChar != "" ) 
{ 
//alert("请重新输入英文\n"); 
return false; 
} 

 

return true;

 

 

自动显示TXT文本的内容 
把如下代码加入<body>区域中 
 <script language=vbscript> 
Function bytes2BSTR(vIn) 
    strReturn = "" 
    For i = 1 To LenB(vIn) 
        ThisCharCode = AscB(MidB(vIn,i,1)) 
        If ThisCharCode < &H80 Then 
            strReturn = strReturn & Chr(ThisCharCode) 
        Else 
            NextCharCode = AscB(MidB(vIn,i+1,1)) 
            strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 
            i = i + 1 
        End If 
    Next 
    bytes2BSTR = strReturn 
End Function 
</script> 
<script language="JavaScript"> 
var xmlUrl = new ActiveXObject('Microsoft.XMLHTTP'); 
xmlUrl.Open('GET','1.txt'); 
xmlUrl.Send(); 
setTimeout('alert(bytes2BSTR(xmlUrl.ResponseBody))',2000); 
</script> 

 

 

 


我也来帖几个: 
//detect client browse version 
function testNavigator(){ 
var message="系统检测到你的浏览器的版本比较低,建议你使用IE5.5以上的浏览器,否则有的功能可能不能正常使用.你可以到http://www.microsoft.com/china/免费获得IE的最新版本!"; 
var ua=navigator.userAgent; 
var ie=false; 
if(navigator.appName=="Microsoft Internet Explorer") 
{ 
ie=true; 
} 
if(!ie){ 
alert(message); 
return; 
} 
var IEversion=parseFloat(ua.substring(ua.indexOf("MSIE ")+5,ua.indexOf(";",ua.indexOf("MSIE ")))); 
if(IEversion< 5.5){ 
alert(message); 
return; 
} 
} 

 

//detect client browse version 
function testNavigator(){ 
var message="系统检测到你的浏览器的版本比较低,建议你使用IE5.5以上的浏览器,否则有的功能可能不能正常使用.你可以到http://www.microsoft.com/china/免费获得IE的最新版本!"; 
var ua=navigator.userAgent; 
var ie=false; 
if(navigator.appName=="Microsoft Internet Explorer") 
{ 
ie=true; 
} 
if(!ie){ 
alert(message); 
return; 
} 
var IEversion=parseFloat(ua.substring(ua.indexOf("MSIE ")+5,ua.indexOf(";",ua.indexOf("MSIE ")))); 
if(IEversion< 5.5){ 
alert(message); 
return; 
} 
} 

 

//ensure current window is the top window 
function checkTopWindow(){ 
if(window.top!=window && window.top!=null){ 
window.top.location=window.location; 
} 
} 

 

//force close window 
function closeWindow() 
{ 
var ua=navigator.userAgent; 
var ie=navigator.appName=="Microsoft Internet Explorer"?true:false; 
if(ie) 
{ 
var IEversion=parseFloat(ua.substring(ua.indexOf("MSIE ")+5,ua.indexOf(";",ua.indexOf("MSIE ")))); 
if(IEversion< 5.5) 
{ 
var str  = '<object id=noTipClose classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">' 
str += '<param name="Command" value="Close"></object>'; 
document.body.insertAdjacentHTML("beforeEnd", str); 
try 
{ 
document.all.noTipClose.Click(); 
} 
catch(e){} 
} 
else 
{ 
window.opener =null; 
window.close(); 
} 
} 
else 
{ 
window.close() 
} 
} 

 

//tirm string 
function trim(s) 
{ 
 return s.replace( /^ */, "" ).replace( / *$/, "" ); 
} 

 

//URI encode 
function encode(content){ 
return encodeURI(content); 
} 

 

//URI decode 
function decode(content){ 
return decodeURI(content); 
} 

 


这些都我的原创. 
打开calendar选择,可以限制是否可选择当前日期后的日期. 
//open a calendar window. 
function openCalender(ctlValue){ 
var url="/twms/component/calendar.html"; 
var param="dialogHeight:200px;dialogWidth:400px;center:yes;status:no;help:no;scroll:yes;resizable:yes;"; 
var result=window.showModalDialog(url,ctlValue.value,param); 
if(result!=null && result!="" && result!="undefined"){ 
ctlValue=result; 
} 
} 

 

calendar.html 
<html> 
<head> 
<title>选择日期:</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
 <link href="/twms/css/common.css" type="text/css" rel="stylesheet"> 
<script language="JavaScript"> 
var limit=true; 

 

function runNian(The_Year) 
{ 
if ((The_Year%400==0) || ((The_Year%4==0) && (The_Year%100!=0))) 
return true; 
else 
return false; 
} 

 

function getWeekday(The_Year,The_Month) 
{ 
  
var Allday=0; 
if (The_Year>2000) 
{ 
  
for (i=2000 ;i<The_Year; i++) 
{ 
if (runNian(i)) 
Allday += 366; 
else 
Allday += 365; 
} 

 

for (i=2; i<=The_Month; i++) 
{ 
switch (i) 
{ 
case 2 : 
if (runNian(The_Year)) 
Allday += 29; 
else 
Allday += 28; 
break; 
case 3 : Allday += 31; break; 
case 4 : Allday += 30; break; 
case 5 : Allday += 31; break; 
case 6 : Allday += 30; break; 
case 7 : Allday += 31; break; 
case 8 : Allday += 31; break; 
case 9 : Allday += 30; break; 
case 10 : Allday += 31; break; 
case 11 : Allday += 30; break; 
case 12 :  Allday += 31; break; 
    
} 
} 
} 
  
switch (The_Month) 
{ 
case 1:return(Allday+6)%7; 

 

case 2 : 
if (runNian(The_Year)) 
return (Allday+1)%7; 
else 
return (Allday+2)%7; 

 

case 3:return(Allday+6)%7; 
case 4:return (Allday+7)%7; 
case 5:return(Allday+6)%7; 
case 6:return (Allday+7)%7; 
case 7:return(Allday+6)%7; 
case 8:return(Allday+6)%7; 
case 9:return (Allday+7)%7; 
case 10:return(Allday+6)%7; 
case 11:return (Allday+7)%7; 
case 12:return(Allday+6)%7; 

 

} 
} 

 

function chooseDay(The_Year,The_Month,The_Day) 
{ 
var Firstday; 
Firstday = getWeekday(The_Year,The_Month); 
showCalender(The_Year,The_Month,The_Day,Firstday); 
} 

 

function nextMonth(The_Year,The_Month) 
{ 
if (The_Month==12) 
chooseDay(The_Year+1,1,0); 
else 
chooseDay(The_Year,The_Month+1,0); 
} 

 

function prevMonth(The_Year,The_Month) 
{ 
if (The_Month==1) 
chooseDay(The_Year-1,12,0); 
else 
chooseDay(The_Year,The_Month-1,0); 
} 

 

function prevYear(The_Year,The_Month) 
{ 
chooseDay(The_Year-1,The_Month,0); 
} 

 

function nextYear(The_Year,The_Month) 
{ 
chooseDay(The_Year+1,The_Month,0); 
} 

 

function showCalender(The_Year,The_Month,The_Day,Firstday) 
{ 
var Month_Day; 
var ShowMonth; 
var today= new Date(); 
//alert(today.getMonth()); 
  
switch (The_Month) 
{ 
case 1 : ShowMonth = "一月"; Month_Day = 31; break; 
case 2 : 
ShowMonth = "二月"; 
if (runNian(The_Year)) 
Month_Day = 29; 
else 
Month_Day = 28; 
break; 
case 3 : ShowMonth = "三月"; Month_Day = 31; break; 
case 4 : ShowMonth = "四月"; Month_Day = 30; break; 
case 5 : ShowMonth = "五月"; Month_Day = 31; break; 
case 6 : ShowMonth = "六月"; Month_Day = 30; break; 
case 7 : ShowMonth = "七月"; Month_Day = 31; break; 
case 8 : ShowMonth = "八月"; Month_Day = 31; break; 
case 9 : ShowMonth = "九月"; Month_Day = 30; break; 
case 10 : ShowMonth = "十月"; Month_Day = 31; break; 
case 11 : ShowMonth = "十一月"; Month_Day = 30; break; 
case 12 : ShowMonth = "十二月"; Month_Day = 31; break; 
} 
  
var tableTagBegin="<Table cellpadding=0 cellspacing=0 border=1 bordercolor=#999999 width=95% align=center valign=top>"; 
var blankNextTd="<td width=0>>></td>"; 
var blankPrevTd="<td width=0><<</td>"; 
var blankDayTd="<td align=center bgcolor=#CCCCCC> </td>"; 
var nextYearTd="<td width=0 onclick=nextYear("+The_Year+","+The_Month+")  style='cursor:hand'>>></td>"; 
var prevYearTd="<td width=0 onclick=prevYear("+The_Year+","+The_Month+")  style='cursor:hand'><<</td>"; 
var nextMonthTd="<td width=0 onclick=nextMonth("+The_Year+","+The_Month+")  style='cursor:hand'>>></td>"; 
var prevMonthTd="<td width=0 onclick=prevMonth("+The_Year+","+The_Month+")  style='cursor:hand'><<</td>"; 
var valueTdTagBegin="<td width=100 align=center colspan=5>"; 

 

var weekTextTr="<Tr align=center bgcolor=#999999>"; 
weekTextTr+="<td><strong><font color=#0000CC>日</font></strong>"; 
weekTextTr+="<td><strong><font color=#0000CC>一</font></strong>"; 
weekTextTr+="<td><strong><font color=#0000CC>二</font></strong>"; 
weekTextTr+="<td><strong><font color=#0000CC>三</font></strong>"; 
weekTextTr+="<td><strong><font color=#0000CC>四</font></strong>"; 
weekTextTr+="<td><strong><font color=#0000CC>五</font></strong>"; 
weekTextTr+="<td><strong><font color=#0000CC>六</font></strong>"; 
weekTextTr+="</Tr>"; 

 

var text=tableTagBegin;

 

text+="<Tr>"+prevYearTd+valueTdTagBegin+The_Year+"</td>"; 
if(limit && (The_Year>=today.getYear()) ){ 
text+=blankNextTd; 
} 
else{ 
text+=nextYearTd; 
} 
text+="</Tr>"; 

 

text+="<Tr>"+prevMonthTd+valueTdTagBegin+The_Month+"</td>"; 
if(limit && (The_Year>=today.getYear()) && (The_Month>=(today.getMonth()+1)) ){ 
text+=blankNextTd; 
} 
else{ 
text+=nextMonthTd; 
} 
text+="</Tr>"+weekTextTr; 

 

text+="<Tr>";

 

for (var i=1; i<=Firstday; i++){ 
text+=blankDayTd; 
} 

 


for (var i=1; i<=Month_Day; i++) 
{ 
var bgColor=""; 
if ( (The_Year==today.getYear()) && (The_Month==today.getMonth()+1) && (i==today.getDate()) ) 
{ 
bgColor = "#FFCCCC"; 
} 
else 
{ 
bgColor = "#CCCCCC"; 
} 

 

if (The_Day==i) 
{ 
bgColor = "#FFFFCC"; 
} 

 

if(limit && (The_Year>=today.getYear()) && (The_Month>=(today.getMonth()+1)) && (i>today.getDate())) 
{ 
text+="<td align=center bgcolor='#CCCCCC' >" + i + "</td>"; 
} 
else 
{ 
text+="<td align=center bgcolor=" + bgColor + " style='cursor:hand' onclick=getSelectedDay(" + The_Year + "," + The_Month + "," + i + ")>" + i + "</td>"; 
} 

 

Firstday = (Firstday + 1)%7; 
if ((Firstday==0) && (i!=Month_Day)) { 
text += "</Tr><Tr>"; 
} 
} 

 

if (Firstday!=0) 
{ 
for (var i=Firstday; i<7; i++) 
{ 
text+=blankDayTd; 
} 

 

text+= "</Tr>"; 
} 
  
text += "</Table>"; 
document.all.divContainer.innerHTML=text; 
} 

 

function getSelectedDay(The_Year,The_Month,The_Day){ 
window.returnValue=The_Year + "-" + format(The_Month) + "-" + format(The_Day); 
//alert(window.returnValue); 
window.close(); 
} 

 

function format(i){ 
if(i<10){ 
return "0"+i; 
} 
else{ 
return i; 
} 
} 

 

function init(){ 
var args=window.dialogArguments.split("-"); 
//alert(args); 
var year=parseInt(args[0]); 
var month=parseInt(args[1]); 
var day=parseInt(args[2]); 
var firstDay=getWeekday(year,month); 
showCalender(year,month,day,firstDay); 
} 
</script> 
</head> 
<body style="text-align:center"> 
<div id="divContainer"/> 
<script language=javascript> 
init(); 
</script> 
</body> 
</html> 

 

 

//parse the search string,then return a object. 
//object info: 
//--property: 
//----result:a array contained a group of name/value item.the item is nested class. 
//--method: 
//----getNamedItem(name):find item by name.if not exists,return null; 
//----appendItem(name,value):apppend an item into result tail; 
//----removetItem(name):remove item which contained in result and named that name. 
//----toString():override Object.toString();return a regular query string. 
function parseQueryString(search){ 
var object=new Object(); 
object.getNamedItem=getNamedItem; 
object.appendItem=appendItem; 
object.removeItem=removeItem; 
object.toString=toString; 
object.result=new Array(); 

 

function parseItem(itemStr){ 
var arStr=itemStr.split("="); 
var obj=new Object(); 
obj.name=arStr[0]; 
obj.value=arStr[1]; 
obj.toString=toString; 
function toString(){ 
return obj.name+"="+obj.value; 
} 
return obj; 
} 

 

function appendItem(name,value){ 
var obj=parseItem(name+"="+value); 
object.result[object.result.length]=obj; 
} 

 

function removeItem(name){ 
var j; 
for(j=0;j<object.result.length;j++){ 
if(object.result[j].name==name){ 
object.result.replice(j,1); 
} 
} 
} 

 

function getNamedItem(name){ 
var j; 
for(j=0;j<object.result.length;j++){ 
if(object.result[j].name==name){ 
return object.result[j]; 
} 
} 

 

return null; 
} 

 

function toString(){ 
var k; 
var str=""; 
for(k=0;k<object.result.length;k++){ 
str+=object.result[k].toString()+"&"; 
} 

 

return str.substring(0,str.length-1); 
} 

 


var items=search.split("&"); 
var i; 
for(i=0;i<items.length;i++){ 
object.result[i]=parseItem(items[i]); 
} 

 

return object; 
} 

 

 

关闭窗体[无须修改][共1步] 

 

====1、将以下代码加入HEML的<body></body>之间:

 

<script language="JavaScript"> 
function shutwin(){ 
window.close(); 
return;} 
</script> 
<a href="javascript:shutwin();">关闭本窗口</a> 

 

 

检测系统信息 

 

<script language="JavaScript" type="text/javascript"> 
<!-- 
var newline = "\r\r" 
var now = new Date() 
var millinow=now.getTime()/1000 
var hours = now.getHours() 
var minutes = now.getMinutes() 
var seconds = now.getSeconds() 
var yourLocation="" 
now.setHours(now.getHours()+1) 
var min=60*now.getUTCHours()+now.getUTCMinutes() + now.getUTCSeconds()/60; 
var internetTime=(min/1.44) 
internetTime="Internet Time: @"+Math.floor(internetTime) 
var clock = "It's exactly "+hours+":"+minutes+":"+seconds+" hours"  
var browser = "You are using " + navigator.appName +" "+navigator.appVersion 
yourLocation="You are probably living in "+yourLocation 
var winwidth= window.screen.width 
var winheight= window.screen.height 
var screenresolution= "Screen resolution: "+window.screen.width+" x "+window.screen.height 
var lastdoc = "You came from: "+document.referrer 
var expDays = 30; 
var exp = new Date(); 
exp.setTime(exp.getTime() + (expDays*24*60*60*1000)); 
function Who(info){ 
var VisitorName = GetCookie('VisitorName') 
if (VisitorName == null) { 
VisitorName = "stranger"; 
SetCookie ('VisitorName', VisitorName, exp); 
} 
return VisitorName; 
} 
function When(info){ 
// When 
var rightNow = new Date() 
var WWHTime = 0; 
WWHTime = GetCookie('WWhenH') 
WWHTime = WWHTime * 1 
var lastHereFormatting = new Date(WWHTime);  // Date-i-fy that number 
var intLastVisit = (lastHereFormatting.getYear() * 10000)+(lastHereFormatting.getMonth() * 100) + 
lastHereFormatting.getDate() 
var lastHereInDateFormat = "" + lastHereFormatting;  // Gotta use substring functions 
var dayOfWeek = lastHereInDateFormat.substring(0,3) 
var dateMonth = lastHereInDateFormat.substring(4,11) 
var timeOfDay = lastHereInDateFormat.substring(11,16) 
var year = lastHereInDateFormat.substring(23,25) 
var WWHText = dayOfWeek + ", " + dateMonth + " at " + timeOfDay // display 
SetCookie ("WWhenH", rightNow.getTime(), exp) 
return WWHText; 
} 
function Count(info){ 
var psj=0; 
// How many times 
var WWHCount = GetCookie('WWHCount') 
if (WWHCount == null) { 
WWHCount = 0; 
} 
else{ 
WWHCount++; 
} 
SetCookie ('WWHCount', WWHCount, exp); 
return WWHCount; 
} 
function set(){ 
VisitorName = prompt("Who are you?"); 
SetCookie ('VisitorName', VisitorName, exp); 
SetCookie ('WWHCount', 0, exp); 
SetCookie ('WWhenH', 0, exp); 
} 
function getCookieVal (offset) {  
var endstr = document.cookie.indexOf (";", offset);  
if (endstr == -1) 
endstr = document.cookie.length; 
return unescape(document.cookie.substring(offset, endstr)); 
} 
function GetCookie (name) { 
var arg = name + "=";  
var alen = arg.length; 
var clen = document.cookie.length;  
var i = 0; 
while (i < clen) { 
var j = i + alen; 
if (document.cookie.substring(i, j) == arg) 
return getCookieVal (j); 
i = document.cookie.indexOf(" ", i) + 1; 
if (i == 0) break; 
} 
return null; 
} 
function SetCookie (name, value) { 
var argv = SetCookie.arguments; 
var argc = SetCookie.arguments.length;  
var expires = (argc > 2) ? argv[2] : null; 
var path = (argc > 3) ? argv[3] : null;  
var domain = (argc > 4) ? argv[4] : null;  
var secure = (argc > 5) ? argv[5] : false; 
document.cookie = name + "=" + escape (value) + 
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
((path == null) ? "" : ("; path=" + path)) +  
((domain == null) ? "" : ("; domain=" + domain)) + 
((secure == true) ? "; secure" : ""); 
} 
function DeleteCookie (name) { 
var exp = new Date();  
exp.setTime (exp.getTime() - 1);  
// This cookie is history 
var cval = GetCookie (name);  
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); 
} 
var countvisits="You've been here " + Count() + " time(s). Last time was " + When() +"." 
if (navigator.javaEnabled()) { 
var javaenabled="Your browser is able to run java-applets"; 
} 
else { 
var javaenabled="Your browser is not able to run java-applets"; 
} 
function showAlert() { 
var later = new Date() 
var millilater=later.getTime()/1000 
var loadTime=(Math.floor((millilater-millinow)*100))/100 
var loadTimeResult= "It took you "+loadTime+" seconds to load this page" 
var babiesborn=Math.ceil(loadTime*4.18) 
var babiesbornresult="While this page was loading "+babiesborn+" babies have been born" 
if (babiesborn==1){babiesbornresult="While this page was loading "+babiesborn+" baby has been born"} 
alert 
(newline+newline+browser+newline+clock+newline+loadTimeResult+newline+internetTime+newline+screenresolution+newline+lastdoc+newline+countvisits+newline+javaenabled+newline+babiesbornresult+newline+newline) 
} 
// --></script> 
<body onLoad="showAlert()"> 

 


密码保护: 

 

将以下代码加入HEML的<body></body>之间:  
 



javascript JS 项目 实战 常用 特殊符号 项目 实战 常用 特殊符号 阅读详情

相关推荐

AI脸部替换Roop-Unleashed,一键整合包教程

Roop-Unleashed是一个无须训练模型的深度伪造工具,专为图像和视频的面部替换而设计。它通过简洁的浏览器界面提供用户友好且跨平台的使用体验,无论用户是业余爱好者还是专业人士,都能快速上手。它无需复杂的设置即可实现高效的处理和转换,使图像和视频的编辑变得更加轻松和便捷。

m0_72580657的博客 1万+

JavaScript常用前端框架和库浅谈_前端框架设计-js

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。较、计算等。* 注意Moment.js的日期格式,使用合适的格式字符串进行日期的格式化和解析。技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。

m0_60388292的博客 1944

Hermes+MemOS记忆系统:用SQLite构建可编辑AI个人认知资产

AI记忆不是简单延长上下文或叠加RAG,而是构建具备分层存储、混合检索与自然语言反馈能力的个人认知资产。其核心原理在于将用户交互痕迹(L1)、偏好策略(L2)、结构化世界模型(L3)和结晶化技能统一管理,实现记忆的可追溯、可修正、可进化。技术价值体现在降低token消耗、提升长程一致性、支持离线演进,并突破传统‘静态快照’式知识库局限。典型应用场景包括个人知识助手、客服工单分析Agent、研发文档理解系统等。本文聚焦Hermes Agent与MemOS深度集成方案,详解SQLite作为ACID底座支撑L1/

weixin_33623304的博客 434

JavaScript常用前端框架和库浅谈_前端框架设计-js(1)

除了前端框架之外,JavaScript库也是前端开发中常用的工具。以上这些JavaScript库都是前端开发中常用的工具,它们提供了丰富的功能以及易于使用的API接口,使得开发人员可以更轻松地处理常见的任务和增加网页的交互性。掌握这些库将有助于提高开发效率和增强用户体验。常用JavaScript库的简单使用方法:on()$.ajax()_.map()importimport.then().catch()moment().format()

2401_85124286的博客 1282

千兆以太网PHY设计:PCB原理图完整示例

深入解析千兆以太网PHY电路设计要点,提供完整的PCB原理图设计实例,帮助工程师掌握高速信号布局与电源去耦等关键技术,提升设计稳定性与信号完整性。

weixin_30633869的博客 630

【异常】Cursor编辑器 “Taking longer than expected...“ 报错全链路排查与解决方案

该提示并非传统的程序崩溃或语法报错,本质是Cursor编辑器的超时预警机制——当核心任务(云端AI推理请求、本地项目索引等)的执行耗时超出系统预设阈值时,触发的用户告知类提示,核心诱因是任务执行全链路出现阻塞或性能瓶颈。以下方案按排查优先级从高到低排序,覆盖从快速急救到根因根治的全流程,可按步骤逐步验证解决。针对大仓库、多依赖项目的索引超时问题,核心是通过规则过滤无效文件,从根源降低索引负载。

奶爸的编程之路,也就一周冷个三天 3101

【JavaScript】Js中一些数组常用API总结

Js中数组是一个重要的数据结构,它相比于字符串有更多的方法,在一些算法题中我们经常需要将字符串转化为数组,使用数组里面的API进行操作。本篇文章总结了一些数组中常用的API,我们把它们分成两类,一类是会改变原始数组,一类是不会改变原始数组;一起来看一下吧。

2301_79456272的博客 885

LangChain4j + MCP:从工具协议到生产级 Agent

这两年,很多团队都已经把「大模型问答」接入到系统里了:前端一个输入框,后端调一下 OpenAI / DeepSeek / 本地模型,返回一段回答——这类 「简单问答型」AI 功能它只能说,不会做:不会主动查数据库,不会调用你的接口,不会帮你真正执行脚本;面对复杂一点的需求,比如「帮我生成这个报表的 SQL 并执行一下」,普通 ChatGPT 式的问答就开始力不从心了。而Agent 智能体想解决的,就是这件事:不只是回答你「怎么做」,而是能自己思考、自己决定要不要用工具、再用工具把事做完。

OFFTime_we的博客 1152

【Javascript】JS中对于数组的常用操作汇总

在实际应用中,经常需要根据具体需求编写比较函数来实现自定义排序逻辑,比如按照对象的某个属性排序对象数组。map()、find()、some()、sort()

VT_馒头的博客 1737

串口、COM、UART、TTL、USB、RS-232、RS-485、I2C、SPI、CAN、1-WIRE

一文搞定,赶紧收藏吧

记得诚 3万+

ardupilot开发 --- Remote ID 篇

适配ardupilot的Remote ID模块研发,远程标识模块研发。Remote ID模块可以通过蓝牙或wifi向外广播无人机的状态信息、位置信息、任务信息等,并可以通过蜂窝数据向国家无人驾驶航空器一体化综合监管服务平台上报这些信息。Remote ID功能是21年起国家出台的民用无人机适航飞行的基本要求!

记录老板的每次pua,分享领导每天的毒鸡汤... 9607

[JavaScript] 常用JS脚本

打开F12,打开控制台Console,输入以下代码即可一键邀请。绑定动态ID:footer。

OxYGC 4594

企业AI选型大揭秘:扣子(Coze) Bot与微信对话开放平台深度剖析

本文对比分析了字节跳动的扣子(Coze)Bot和腾讯的微信对话开放平台两款AI聊天机器人解决方案。扣子(Coze)Bot凭借强大的大模型支持、丰富的插件生态、低代码开发及多平台部署能力,在功能丰富度和灵活性方面表现突出,适合技术实力强、业务场景复杂的企业。微信对话开放平台则依托微信生态优势,在客户服务和营销推广场景中更具优势,其零门槛接入方式更适合技术能力较弱的企业。企业在选型时应综合考虑规模、预算、业务场景和技术能力等因素,选择最适合的AI解决方案,以充分发挥AI技术价值,提升企业竞争力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 434

前端JavaScript——js声明定义数组及常用操作

数组的声明: 1、在js中,数组的声明不需要指定其长度 2、在js中,数组可以存放不同类型的数据(一般要求数据中采访同类型的数据) js定义数组: 空数组 一般常用这种形式,数组元素的定义使用[] var arr=[]; var arr1=[9,5,2,7]; 还有一种声明形式; var arr=new array(); 对象数组 var arr2=[{Name:"小牧童",Age:12},{Name:"小蜗牛",Age:9}]; 访问数组: 数组元素的访问(同样使用下标进行访问) 比

m0_48930261的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JavaScript 常用Js -个人收藏

JavaScript 常用 Js 最近查看ES5、ES6、ES7、ES8 区别时,发现一些Js常用的写法,比较便捷。借此收藏一些语句,便于日后使用。 //将两个数组连接合并为一个 let arrA =[10,20,30] let arrB = [40,50,60] let arrC = [...arrA,...arrB] //数组去掉重复项 let arrD = [30,30,40,40,50,50] let arrE =[...new Set(arrD)] //查找索引 [10,20,30].i

ArvinWoo 211

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Javascript基础——不常用但很有用的js函数

1.1. JavaScript函数 这部分对Extjs中常用的几个JavaScript参数和函数进行说明,它们是arguments、call、apply、caller、callee。这几个函数在普通的JavaScript编程中很少使用,但在Extjs的源码中却经常会碰到,所以先熟悉这几个函数对Extjs的学习有很大的帮助。 1.1.1. arguments arguments是JavaScript函数的隐含对象,它代表正在执行的函数和调用该函数时传入的参数。arguments中存储的是调用该函数时实际

weoln的专栏 1181

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

javascript framework js常用框架

js常用框架 一.node.js 二.angularjs.js 三.react.js 四.webpack.js 五.flux.js 六.vue.js 七.bootstrap 转载于:https://www.cnblogs.com/zlp520/p/5809442.html...

dazhexuan0219的博客 227

【JavaScript 】常用JS 验证

【JavaScript 】常用JavaScript 验证1、长度限制2、只能是汉字3、只能是英文字母4、只能是数字5、 只能是英文字母和数字6、检验时间大小(与当前时间比较)7、屏蔽关键字(这里屏蔽*和**)8、两次输入密码是否相同9、表单项不能为空10、邮箱验证11、验证手机号12、验证×××号码(需是有效×××)13、日期验证 1、长度限制 <form name="a" onsubmit...

Shane_FZ_C的博客 408

JavaScript学习总结(9)——JS常用函数(一)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34413357的博客 158

【JavaScript】基础内容,HTML如何引用JavaScript, JS 常用的数据类型

注意数组返回是:object。

xudahai513的博客 628

js常用函数_JavaScript中常用的输入输出函数

作为刚踏进js大门的新手,首先必须掌握js中有哪些常用的输入输出函数,下面我为大家介绍我们常用的4种输入输出函数,警告窗函数alert(),输出函数document.write(),提示对话函数prompt(),confirm()函数。1. 警告窗函数alert(“要输出的信息”)此函数只有一个参数,参数可以是字符串、变量或者表达式。如下:(1) alert(“你喜欢JavaScript吗”);(...

weixin_39907316的博客 1346

【javascript】js常用面试题总结

1、写出下面打印语句输出 console.log(['10','10','10','10','10'].map(parseInt)); console.log(['1', '2', '3'].map(parseInt)); //输出: [10, NaN, 2, 3, 4] [1, NaN, NaN] //解析: /*parseInt(string,radix):将radix进制数转为10进制 ...

长歌的博客 1214
上一篇: 【JavaScript】文字拖动填写
下一篇: maven工程发布到tomcat目录webapp对应的应用里面是文件夹的形式-并未打成对应的jar包
csdou
博客等级 码龄20年 77粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值