针对有网友说看不见文章内容, 现提示如下: 点击每一个标题行任一地方都会展开和隐藏此文章内容(不要点击标题). 目前展开隐藏功能只支持IE浏览器,虽然可以改成支持FF浏览器,不过现在一直没时间去弄,等有时间再修改了。 |
blog名称:乱闪Blog 日志总数:267 评论数量:1618 留言数量:-26 访问次数:2668922 建立时间:2005年1月1日 |
|

| |
模仿QQ和MSN消息提示的效果
|
你一定很喜欢像QQ或者MSN好友登录提示的效果吧,那么怎么样能在网页中实现呢?正好我在蓝色理想中发现了这段代码,贴出给大家看看(注意,如果使用以下代码,先将全角“<>”替换成半角的“<>”才能正常使用):
<SCRIPT> var oPopup = window.createPopup(); var popTop=50; function popmsg(msgstr){ var winstr="<table style=\"border: 1 solid #FFA6CA\" width=\"241\" height=\"172\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" background=\"http://www.blueidea.com/articleimg/2004/01/1576/04-s.jpg\" >"; winstr+="<tr><td height=\"30\"> </td></tr><tr><td align=\"center\"><table width=\"90%\" height=\"110\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"; winstr+="<tr><td valign=\"top\" style=\"font-size:12px; color: red; face: Tahoma\">"+msgstr+"</td></tr></table></td></tr></table>"; oPopup.document.body.innerHTML = winstr; popshow(); } function popshow(){ window.status=popTop; if(popTop>1720){ clearTimeout(mytime); oPopup.hide(); return; }else if(popTop>1520&&popTop<1720){ oPopup.show(screen.width-250,screen.height,241,1720-popTop); }else if(popTop>1500&&popTop<1520){ oPopup.show(screen.width-250,screen.height+(popTop-1720),241,172); }else if(popTop<180){ oPopup.show(screen.width-250,screen.height,241,popTop); }else if(popTop<220){ oPopup.show(screen.width-250,screen.height-popTop,241,172); } popTop+=10; var mytime=setTimeout("popshow();",50); } popmsg(" <img border=\"0\" src=\"http://www.blueidea.com/img/common/logo.gif\" width=\"90\" height=\"27\">欢迎光临蓝色理想,大量的设计资源等着你!有什么问题可以到经典论坛提出。"); </SCRIPT> |
|
背景音乐随机播放
|
脚本说明: 把如下代码加入<body>区域中 <script language="JavaScript"> <!-- var sound1="online01.mid"; var sound2="online02.mid"; var sound3="online03.mid"; var sound4="online04.mid"; var sound5="online05.mid"; var sound6="online06.mid"; var sound7="online07.mid"; var sound8="online08.mid"; var sound9="online09.mid"; var sound10="online10.mid"; var x=Math.round(Math.random()*9) if (x==0) x=sound1; else if (x==1) x=sound2; else if (x==2) x=sound3; else if (x==3) x=sound4; else if (x==4) x=sound5; else if (x==5) x=sound6; else if (x==6) x=sound7; else if (x==7) x=sound8; else if (x==8) x=sound9; else x=sound10; if (navigator.appName=="Microsoft Internet Explorer") document.write('<bgsound src='+'"'+x+'"'+' loop="infinite">'); else document.write('<embed src='+'"'+x+'"'+'hidden="true" border="0" width="20" height="20" autostart="true" loop="true">') //--> </script> 注:其中 online01.mid ... online010.mid 为音乐文件名 如果配合使用页面定时刷新代码,将能实现象播放器一样循环播放的效果 |
|
一个表单提交到多个页面
|
form.submit中控制。。。。 <html> <script language=javascript> function dosubmit(){ window.open('first.php?var1='+window.form.var1.value+'&var2='+window.form.var2.value); window.open('second.php?var1='+window.form.var1.value+'&var2='+window.form.var2.value); return false; } </script> <form name=form onsubmit="return dosubmit();"> <input type=text name=var1><br> <input type=text name=var2> <br><input type=submit></form> |
|
HTML在线编辑器
|
================使用说明======== 1.你需要将所有文件传至你的空间。 2.调用方法:首先装载:_editor_url=""引号中间填该程序所在路径。 =============================== <script language="Javascript1.2"><!-- // load htmlarea _editor_url = ""; // URL to htmlarea files var win_ie_ver = parseFloat(navigator.appVersion.split("MSIE")[1]); if (navigator.userAgent.indexOf('Mac') >= 0) { win_ie_ver = 0; } if (navigator.userAgent.indexOf('Windows CE') >= 0) { win_ie_ver = 0; } if (navigator.userAgent.indexOf('Opera') >= 0) { win_ie_ver = 0; } if (win_ie_ver >= 5.5) { document.write('<scr' + 'ipt src="' +_editor_url+ 'editor.js"'); document.write(' language="Javascript1.2"></scr' + 'ipt>'); } else { document.write('<scr'+'ipt>function editor_generate() { return false; }
</scr'+'ipt>'); } // --></script> 然后调用:('x')括号中的x为textarea的名字(是name不是id) =============================== <script language="javascript1.2"> editor_generate('x'); </script> ======================================= 下载: 里面的test.htm为一个演示页面。
htmlarea.zip |
|
常用易懂的精品源码
|
javascript在我们网页设计中,不管是程序员,还是网页设计师,我想大家都不可能在工作中没有用到javascrip,他是我们最基础本最常用的一种脚本,他是在客户端执行,你可以利用他做出很多互动的页面出来,下面是一些很常用的一些javascrip源码,都有相应说明,还有一些结合了我们常用的asp一起结合举例,相信大家看完后,会有一定的收获,偶闪了.
javascript alert()方法
<script language=javascript> alert( "提示,你提交的数量太大了,速度会慢,我们帮你选择了80条数据" ); location.href = "http;//www.cn-media.com/sql10.asp" </script>
asp里的常用用法
<%Response.Write("<script>alert('非法操作!');window.close();</script>")%>
一个for...next小例子
<% for i=1 to 20%> <FONT color=#000fd<%=i%>>media<%=i%></font><br> <%next%>
javascript open()方法
<script language="JavaScript"> <!-- function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } window.open('','媒体中国'); //--> </script> 注:上面的open(url,窗口名,"属性列表,他包括有height width top left..等等");下面为最简单的写法
<script language="JavaScript"> open('','媒体中国'); </script>
javascript confirm()方法
显示一个请求确认对话框,包含一个"确定"按钮和一个取消按钮, <script language="JavaScript"> if (confirm("是否确定删除数据?")==true) alert("成功删除数据"); else alert("没有删除数据"); </script>
javascript prompt()方法
功能是显示一个对话框,要求用户输入数据,他的返回值是用户输入的数据. <script language="JavaScript"> var mystr=prompt("请输入你的姓名"); alert("你的名字是:"+mystr); </script>
点击加入收藏夹
<a href="javascript:window.external.AddFavorite (’/’, ’媒体中国’)">添加到收藏夹</a>
设为首页代码
<span onclick="var strHref=window.location.href;this.style.behavior= ’url(#default#3鸟page)’; this.setHomePage(’’); " style="CURSOR: hand"><br>设置为首页</span>
点击关闭浏览器窗口
<a href="javascript:window.close()"><br> 关闭窗口</a>
进入时显示信息
<body bgcolor="#000000" onLoad="window.alert(’媒体中国(www.cn-media.com) \n\n网址:\n\n’)">
离开页面时跳出一个窗口,可以作为显示重要信息的窗口
第一步:把如下代码加入<head>区域中 <script LANGUAGE="JavaScript"> <!-- Begin function leave() { window.open(’media.htm’,’’,’toolbar=no,menubar=no, location=no,height=225,width=235’); } // End --> </script>
第二步:把<body>区域中内容改为: <body bgcolor="#000000" onUnload="leave()">
离开时显示信息
<body bgcolor="#fef4d9" onUnload="window.alert(’谢谢你的光临!欢迎下次再来!’)">
小提示:javascrip他有对象事件处理,最常用的,如下 onUnload(窗口关闭) onload(窗口启动) onfocus(窗口获得焦点) onblur(窗口失去焦点) onerror(窗口中出现错误)
自动添加网页更新日期
<script language="JavaScript"> <!--hide script from old browsers document.write("本站最后更新日期: <br>" + document.lastModified + "")// end hiding --> </script>
小提示: document.write(document.lastModified)的作用是用document对象的write方法把document对象lastModified属性值写到文档中, lastModified属性得到的是最后修改的时间值.
最常见的javascript检验
<script LANGUAGE="JavaScript"> function FormCheck() { if (document.form1.name.value=="") { alert("请填写您的用户名!"); document.form1.name.focus(); return false; } if (document.form1.mail.value=="") { alert("你的邮箱必须填写"); document.form1.mail.focus(); return false; } if (document.form1.3鸟page.value=="") { alert("留言标题"); document.form1.3鸟page.focus(); return false; } if (document.form1.content.value=="") { alert("留言的内容可要填写"); document.form1.content.focus(); return false; } document.form1.submit(); } //focus()他的意思是获得焦点 //document他是javascipt里的一个对象 </SCRIPT>
忽视右键
<body oncontextmenu="return false"> 或 <body style="overflow-y:hidden">
页面自动关闭
<body onload="window.setTimeout(closes.Click(),10000)"> 这个窗口会在10秒过后自动关闭,而且不会出现提示. </body>
返回上一页
<a href=javascript:history.back(1)>『返回上一页』</a>
判断上一页的来源
asp: request.servervariables("http_referer")
javascript: document.referrer
asp环境测试代码
本机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")%>
好了,相信上面的大家都很容易看得明白,常用易懂,相信大家学会了不少好东西!有空到我们cn-media的QQ群:4401020里聊. |
|
mailto: URL 工具
|
原文出处:http://webreference.com/js/column70/index.html
纲要
JavaScript中,mailto: 这个 URL 功能很强,然而却很少用到。原因之一是开发者只熟悉它的基本功能,而不了解它的多属性支持。mailto: URL 不仅支持邮件地址,还支持 cc、bcc、subject 和 body 域。我们可以通过编写脚本组装一个完整的邮件功能,这看起来应该比那些采用提示用户发送他们的反馈、错误报告、抱怨和称赞等等方式的站点更显温柔、更受欢迎。
URL的语法
本文我们讨论 mailto: URL 的几个部分。首先我们解释 mailto: URL 支持的多个属性 (to、cc、bcc、 subject 和 body)。我们准备了一个简单的 mailto: URL 工具帮助我们生成、查看和测试 mailto: URL。最后,我们演示一个组装 mailto: URL 的脚本。 阅读本文我们将学会: 如何mailto: URL的语法 如何使用 mailto: URL 工具 如何编写 mailto: URL 工具的 HTML 部分 如何编写 mailto: URL 工具的脚本部分 (I) 如何编写 mailto: URL 工具的脚本部分 (II) 如何编写生成 mailto: URL 的脚本 我们以HTML格式提供mailto: URL工具的清单以及 mailto: URL 生成脚本。 mailto: URL 允许你提供信件的收件人地址、主题、抄送或加密抄送和信件的主体以格式化信件。最简单的、也是最常用的 mailto: URL 是指定信件的发送地址。 嵌入在 HTML 标记中时,就像下面一样: < A HREF="mailto:gwok@yeah.net">发送信件< /A> 如果你希望指定信件的其他属性,可以以名/值 (名=值) 对的方式将它们添加到 URL 中。每个属性名后紧随一个等号和一个值。用问号(?) 将“名/值”对和电子邮件地址分开。名/值对之间以 & 分隔。 mailto:xxx@xxxx.net?cc=aegis@yeah.net&bcc=tony@yahoo.com&subject=Your_Tips 具体HTML代码是: < A HREF="mailto:gwok@yeah.net?cc=aegis@yeah.net&bcc=tony@yahoo. com&subject=Your_Tips">欢迎提供反馈< /A> 欢迎提供反馈 在 Mac 系统上, IE 不能分辨 bcc 参数并且会将其添加到 cc 中。例如,当你点击以上连接时,新邮件窗口中的 cc 地址将显示为 aegis@yeah.net&bcc。请避免在这一系统下的浏览器中使用 bcc 参数。另外,Lotus Notes只支持 mailto: URL 中的地址域,指定其他属性会引起混乱。
正文
邮件工具
點擊下面[运行代码]按扭運行以下代码,如果看不到月厉請刷新一次点击[运行代码]打開的網頁: <STYLE TYPE="text/css">
<!--
FORM.tb {display:inline;}
.twidth{width:100%}
.include{ font-size: 75%; font-family: verdana, arial, helvetica;}
.includebig{font-family: verdana, arial, helvetica;}
.includebig A:link { color: blue; }
.includebig A:visited { color: purple; }
.include A:link { color: blue; }
.include A:visited { color: purple; }
.submitter { font-size: 75%; font-family: verdana, arial, helvetica; }
.codehighlight {background:#eee}
.WRy1{background:#fc0}
.WRy2{background:#fff3ac}
pre.code {color: #660099; margin-left:5%}
address {text-align: right}
body {background:#FFFFFF; margin-left: 5%; margin-right: 5%}
.WRBannerCenter {margin-left:-5%; margin-right:-5%; margin-top:8px; margin-bottom:8px; text-align:center}
-->
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
// CREATE A MAILTO URL OR MAILTO ANCHOR TAG
function createMailto(sourceForm, targetField, urlType) {
var to = sourceForm.to.value;
var cc = sourceForm.cc.value;
var bcc = sourceForm.bcc.value;
var subject = sourceForm.subject.value;
var body = sourceForm.body.value;
var linkText= sourceForm.linkText.value;
if (linkText == "") {
linkText = "链接文本";
}
var urltext = "";
// IF THE VALUE IS SET, INCLUDE IT IN THE URL
if (to != "") {
urltext += to;
}
else {
alert("Sorry, you must fill out the 'To' field");
sourceForm.to.focus();
return(1);
}
if (cc != "") {
urltext = addDelimiter(urltext);
urltext += "CC=" + cc;
}
if (bcc != "") {
urltext = addDelimiter(urltext);
urltext += "BCC=" + bcc;
}
if (subject != "") {
urltext = addDelimiter(urltext);
urltext += "Subject=" + escape(subject);
}
if (body != "") {
urltext = addDelimiter(urltext);
urltext += "Body=" + escape(body);
}
if (urlType == "url") {
urltext = "mailto:" + urltext;
}
else {
urltext = "<A HREF=\"mailto:" + urltext + "\">" + linkText + "</A>";
}
// PUT THE NEW URL IN THE FORM FIELD
targetField.value = urltext;
// GIVE THE FIELD FOCUS AND HIGHLIGHT THE TEXT --
// TO FACILITATE EASY COPYING AND PASTING OF THE NEW URL
targetField.focus();
targetField.select();
return(1);
}
// ADD THE "?" OR "&" NAME/VALUE SEPARATOR CHARACTER
function addDelimiter(inputString) {
var inString = inputString;
// IF '?' NOT FOUND, THEN THIS IS THE FIRST NAME/VALUE PAIR
if (inString.indexOf("?") == -1) {
inString += "?";
}
// ELSE IT'S A SUBSEQUENT NAME/VALUE PAIR, SO ADD THE '&' CHARACTER
else {
inString += "&";
}
return inString;
}
// TEST THE MAILTO URL -- ASSIGN THE URL TO THE DOCUMENT LOCATION
// TO POP UP THE MESSAGE WINDOW
function testMailto(loc) {
var doc = loc;
// IF MAILTO URL IS EMBEDDED IN AN ANCHOR TAG
if (doc.indexOf("HREF=") != -1) {
// EXTRACT THE MAILTO URL FROM THE ANCHOR TAG
var doc = doc.substring(doc.indexOf("HREF=")+6, doc.indexOf(">")-1);
}
// ASSIGN THE MAILTO URL TO THE DOCUMENT (THIS WILL POP UP A MAIL WINDOW)
window.location = doc;
}
function viewMailto(linkText) {
alert("URL:\n\n" + linkText);
}
// -->
</SCRIPT>
</HEAD>
</HEAD>
<BODY BGCOLOR="#ffffff">
<table cellpadding=0 cellspacing=0 border=0 class=twidth><tr>
<td valign=top><style type="text/css">
<!--
#WDinclude {font-size:75%; font-family:verdana, arial, helvetica}
.WDi {font-family:verdana, arial, helvetica}
#WDinclude A:link {color: blue}
.WDi A:link {color:blue}
#WDinclude A:visited {color: purple}
.WDi A:visited {color: purple}
.WRy1{background:#fc0} .WRy2{background:#fff3ac}
-->
</style>
<FORM NAME="mailtoForm">
<CENTER>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#ffff99">
<TR ALIGN="LEFT" VALIGN="TOP">
<TD COLSPAN="4"> <CENTER>
<FONT COLOR="#408080" SIZE=+1 face="Arial, Helvetica, sans-serif"><strong>输入邮件信息
</strong> </FONT>
</CENTER></TD>
</TR>
<TR ALIGN="LEFT" VALIGN="TOP">
<TD><FONT FACE="Arial, Helvetica" SIZE=-1><B>收件人:</B></TD>
<TD><INPUT TYPE="text" NAME="to" SIZE=30 STYLE="background-color:'#ffcc66'"></TD>
<TD><FONT FACE="Arial, Helvetica" SIZE=-1><B>抄送:</B></TD>
<TD><INPUT TYPE="text" NAME="cc" SIZE=30 STYLE="background-color:'#ffcc66'"></TD>
</TR>
<TR ALIGN="LEFT" VALIGN="TOP">
<TD ALIGN="LEFT"><FONT FACE="Arial, Helvetica" SIZE=-1><B>密件:</B></TD>
<TD><INPUT TYPE="text" NAME="bcc" SIZE=30 STYLE="background-color:'#ffcc66'"></TD>
<TD><FONT FACE="Arial, Helvetica" SIZE=-1><B>邮件标题:</B></TD>
<TD><INPUT TYPE="text" NAME="subject" SIZE=30 STYLE="background-color:'#ffcc66'"></TD>
</TR>
<TR ALIGN="LEFT" VALIGN="TOP">
<TD ALIGN="LEFT"><FONT FACE="Arial, Helvetica" SIZE=-1><B>邮件内容:</B></TD>
<TD COLSPAN="4"><TEXTAREA NAME="body" WRAP="VIRTUAL" COLS=50 ROWS=3 STYLE="background-color:'#ffcc66'"></TEXTAREA></TD>
</TR>
<TR ALIGN="LEFT" VALIGN="TOP">
<TD ALIGN="LEFT"><FONT FACE="Arial, Helvetica" SIZE=-1><B>链接文本:</B></TD>
<TD COLSPAN="3"><INPUT TYPE="text" NAME="linkText" SIZE=73 STYLE="background-color:'#ffcc66'"></TD>
</TR>
<TR>
<TD COLSPAN="4"> <CENTER>
<INPUT TYPE="Reset" NAME="Clear" Value="Clear">
<INPUT TYPE="button" NAME="CreateURL" VALUE="Create URL" onClick="createMailto(document.mailtoForm, document.mailtoForm.text, 'url')">
<INPUT TYPE="button" NAME="CreateAnchor" VALUE="Create Link" onClick="createMailto(document.mailtoForm, document.mailtoForm.text, 'anchor')">
</CENTER></TD>
</TR>
<TR>
<TD COLSPAN="4"> <CENTER>
<FONT COLOR="#408080" SIZE=+1><B>显示你的mailto: URL</B></FONT>
</CENTER></TD>
</TR>
<TR>
<TD ALIGN="LEFT"><FONT FACE="Arial, Helvetica" SIZE=-1><B>mailto URL:</B></TD>
<TD COLSPAN="3"><INPUT TYPE="text" NAME="text" SIZE=73 STYLE="background-color:'#ffcc66'"></TD>
</TR>
<TR>
<TD COLSPAN="4"> <CENTER>
<INPUT TYPE="button" NAME="Test" VALUE="Test URL" onClick="testMailto(document.mailtoForm.text.value)">
<INPUT TYPE="button" NAME="View" VALUE="View URL" onClick="viewMailto(document.mailtoForm.text.value)">
</CENTER></TD>
</TR>
</TABLE>
</CENTER>
</FORM>
</td>
</tr>
</table>
[Ctrl+A 全选 Ctrl+C 复制,如不能正常显示请刷新一下]
使用 mailto: URL 工具 mailto: URL 工具给你提供了创建 mailto: URL 的一个简单方法。这个工具基于我们简化并扩展了的一个 Netscape 脚本。试一试如何使用它。填写地址、cc、bcc、subject 和 body 域。按钮 Create URL 生成一个 mailto: URL。按钮 Create Link 生成一个带有链接文字的完整链接元素,链接文字可以在相应的域里指定。按钮 Clear 清除所有输入域。mailto: 域显示生成的 URL 或链接。按钮 View URL 弹出一个带有 URL 的警告窗口。按钮 Test URL 调用默认的邮件程序,并弹出一个和填写的输入域相适应的新邮件窗口。最后,从mailto:域复制生成的URL并将其粘贴到你的页面中。
编写 mailto: URL 工具的用户界面
mailto: URL 工具包含两部分。HTML 部分定义了表单自身。表单包括基本输入元素如文本框、文本区和按钮。这些输入的的重要属性是:NAME。所有对这些域值的引用都是通过它们的 NAME 属性。如果表单的 name 是 mailtoForm,而输入域的 name 是 NAME="subject",那么域值就是:
mailtoForm.subject.value 你也可以通过对 mailtoForm.subject.value 赋值来设置这个域。按钮被赋予了要在本文后面讨论的以下事件驱动程序: createMailto()、testMailto() 和 viewMailto()。注意按钮 TYPE="Reset",它清除表单中的所有域,没有被显式指定事件驱动程序。VALUE 域决定按钮上显示的文字。SIZE 属性以字符为单位指定了域的宽度。COLSPAN 属性指定了表格中的一列占据多少个单元格 (如果未指定,默认值为1)。以下是 HTML 代码,它的大部分都是比较简单的:
< BODY> < FONT FACE="Arial, Helvetica" SIZE=-1> < CENTER>< H1>Create a mailto: URL< /H1>< /CENTER> < FORM NAME="mailtoForm"> < CENTER> < TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#ffff99" > < TR ALIGN="LEFT" VALIGN="TOP"> < TD COLSPAN="4"> < CENTER>< B>< FONT COLOR="#408080" SIZE=+1>在这里输入邮件细节< /FONT>< /B>< /CENTER>< /TD> < /TR> < TR ALIGN="LEFT" VALIGN="TOP"> < TD>< FONT FACE="Arial, Helvetica" SIZE=-1>< B>To:< /B>< /TD> < TD>< INPUT TYPE="text" NAME="to" SIZE=30 STYLE="background-color:'#ffcc66'">< /TD> < TD>< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Cc:< /B>< /TD> < TD>< INPUT TYPE="text" NAME="cc" SIZE=30 STYLE="background-color:'#ffcc66'">< /TD> < /TR> < TR ALIGN="LEFT" VALIGN="TOP"> < TD ALIGN="LEFT">< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Bcc:< /B>< /TD> < TD>< INPUT TYPE="text" NAME="bcc" SIZE=30 STYLE="background-color:'#ffcc66'">< /TD> < TD>< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Subject:< /B>< /TD> < TD>< INPUT TYPE="text" NAME="subject" SIZE=30 STYLE="background-color:'#ffcc66'">< /TD> < /TR> < TR ALIGN="LEFT" VALIGN="TOP"> < TD ALIGN="LEFT">< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Body:< /B>< /TD> < TD COLSPAN="4">< TEXTAREA NAME="body" WRAP="VIRTUAL" COLS=63 ROWS=3 STYLE="background-color:'#ffcc66'">< /TEXTAREA>< /TD> < /TR> < TR ALIGN="LEFT" VALIGN="TOP"> < TD ALIGN="LEFT">< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Link Text:< /B>< /TD> < TD COLSPAN="3">< INPUT TYPE="text" NAME="linkText" SIZE=73 STYLE="background-color:'#ffcc66'">< /TD> < /TR> < TR> < TD COLSPAN="4"> < CENTER> < INPUT TYPE="Reset" NAME="Clear" Value="Clear"> < INPUT TYPE="button" NAME="CreateURL" VALUE="Create URL" onClick="createMailto(document.mailtoForm, document.mailtoForm.text, 'url')"> < INPUT TYPE="button" NAME="CreateAnchor" VALUE="Create Link" onClick="createMailto(document.mailtoForm, document.mailtoForm.text, 'anchor')"> < /CENTER> < /TD> < /TR> < TR> < TD COLSPAN="4"> < CENTER>< FONT COLOR="#408080" SIZE=+1>< B>这里是你的 mailto: URL< /B>< /FONT>< /CENTER> < /TD> < /TR> < TR> < TD ALIGN="LEFT">< FONT FACE="Arial, Helvetica" SIZE=-1>< B>mailto URL:< /B>< /TD> < TD COLSPAN="3">< INPUT TYPE="text" NAME="text" SIZE=73 STYLE="background-color:'#ffcc66'">< /TD> < /TR> < TR> < TD COLSPAN="4"> < CENTER> < INPUT TYPE="button" NAME="Test" VALUE="Test URL" onClick="testMailto(document.mailtoForm.text.value)"> < INPUT TYPE="button" NAME="View" VALUE="View URL" onClick="viewMailto(document.mailtoForm.text.value)"> < /CENTER> < /TD> < /TR> < /TABLE> < /CENTER> < /FORM> < /FONT> < /BODY>
编写 mailto: URL 工具的脚本 (I)
mailto: 工具的脚本部分包括四个函数: createMailto()、testMailto()、viewMailto() 和 addDelimiter()。我们先看短的,函数 viewMailto() 使用 alert 来显示 URL:
function viewMailto(mailtoText) { alert("URL:nn" + mailtoText); } 函数 addDelimiter() 在表示地址的名/值对前添加问号 (?),在其它名/值对之间添加 &。我们通过在 URL 文本中查找问号来确定添加了哪一个分隔符。如果已经有问号了,我们添加 &。否则,我们就添加问号:
// 添加 "?" 或 "&" 做为名/值对的分隔符 function addDelimiter(inputString) { var inString = inputString;
// 如果找不到 '?',那么这是第一个名/值对 if (inString.indexOf("?") == -1) { inString += "?"; } // 否则这是随后的名/值对,添加字符 "&" else { inString += "&"; } return inString; } 函数 testMailto() 模拟点击 mailto: URL 时的效果。有一点复杂的是当传递给函数一个链接而不是 URL 时,从链接中抽取 URL。我们通过将它赋值给 window.location 来测试 URL:
// 测试 mailto: URL — 将 URL 赋值给文档的 location // 以弹出邮件窗口 function testMailto(loc) { var doc = loc;
// 如果 mailto: URL 嵌入在 anchor 标记中 if (doc.indexOf("HREF=") != -1) { // 从 anchor 标记中抽取 mailto: URL var doc = doc.substring(doc.indexOf("HREF=")+6, doc.indexOf(">")-1); }
// 将 mailto: URL 赋值给文档 (弹出一个邮件窗口) window.location = doc; }
编写 mailto: URL 工具的脚本 (II)
mailto: URL 工具的主函数是 createMailto()。这个函数接受三个参数:sourceForm (表单名)、targetField (mailto: URL 的目标域名称) 和 urlType (是 url 还是 anchor)。函数 createMailto() 将用户填写的表单域组装成 mailto: URL。我们首先找到用户的输入值:
var to = sourceForm.to.value; var cc = sourceForm.cc.value; var bcc = sourceForm.bcc.value; var subject = sourceForm.subject.value; var body = sourceForm.body.value; var linkText= sourceForm.linkText.value; 变量 linkText 表示将要在链接位置上显示的文本。这个域是可选的,我们默认将它设置为空:
if (linkText == "") { linkText = "Link Text"; } 函数循环地查看每一个域,将它们一个一个地添加到 URL,并添加适当地分隔符:
var urltext = "";
// 如果此值已设置,将其包含到 URL 中 if (to != "") { urltext += to; } else { alert("Sorry, you must fill out the 'To' field"); sourceForm.to.focus(); return(1); } if (cc != "") { urltext = addDelimiter(urltext); urltext += "CC=" + cc; } if (bcc != "") { urltext = addDelimiter(urltext); urltext += "BCC=" + bcc; } if (subject != "") { urltext = addDelimiter(urltext); urltext += "Subject=" + escape(subject); } if (body != "") { urltext = addDelimiter(urltext); urltext += "Body=" + escape(body); } if (urlType == "url") { urltext = "mailto:" + urltext; } else { urltext = "< A HREF="mailto:" + urltext + "">" + linkText + "< /A>"; } 注意我们用escape来处理参数 subject 和 body。这样允许在信件的主题和内容中将 & 和问号 (?) 作为合法字符使用。剩下的就是在 mailto: 域中书写 URL 文本,并将焦点和选择设置到它上面:
// 把新的 URL 放到表单域中 targetField.value = urltext;
// 将焦点设置到此域并高亮显示其文本—这样可以方便地剪贴新 URL targetField.focus(); targetField.select(); return(1);
编写基于脚本的工具
这里我们准备的第二个 mailto: URL 工具仅仅基于一个脚本。它设置信件的细节然后弹出一个填写了细节的信件。以下按钮时调用函数 popupMessage():
點擊下面[运行代码]按扭運行以下代码,如果看不到月厉請刷新一次点击[运行代码]打開的網頁: <SCRIPT language=JavaScript>
<!--
// POP UP A PREFORMATTED EMAIL MESSAGE WINDOW
function popupMessage() {
// SET MESSAGE VALUES
var to = "tomer@netscent.com";
var cc = "yehuda@internet.com";
var bcc = "tomer@internet.com";
var subject = "Comments about your tips";
var body =
"Tomer and Yehuda,\n\n\tI'd like to suggest the following improvements to your tips: \n"
+
"\nFirst, ..." +
"\nAlso, sometimes...." +
"\n\nSincerely,\n\n" + "Your faithful reader...";
// BUILD MAIL MESSAGE COMPONENTS
var doc = "mailto:" + to +
"?cc=" + cc +
"&bcc=" + bcc +
"&subject=" + escape(subject) +
"&body=" + escape(body);
// POP UP EMAIL MESSAGE WINDOW
window.location = doc;
}
// -->
</SCRIPT>
<P>
<FORM><INPUT onclick=popupMessage() type=button value="Test mailto: URL" name=Test> </FORM></P>
[Ctrl+A 全选 Ctrl+C 复制,如不能正常显示请刷新一下]
以上的按钮是这样创建的:
< FORM> < INPUT TYPE="button" NAME="Test" Value="Test mailto: URL" onClick="popupMessage()"> < /FORM> 函数 popupMessage() 的定义为:
function popupMessage() { // 设置信件 var to = "gwok@yeah.net";
var cc = "dehaili@netease.com"; var bcc = "gwok@netease.com"; var subject = "Comments about your tips"; var body = "gwok and dhl," + "nntI'd like to suggest the following improvements to your tips: n" + "nFirst, ..." + "nAlso, sometimes...." + "nnSincerely,nn" + "Your faithful reader...";
// 创建邮件 URL var doc = "mailto:" + to + "?cc=" + cc + "&bcc=" + bcc + "&subject=" + escape(subject) + "&body=" + escape(body);
// 弹出信件 window.location = doc; } 注意在组装 subject 和 body 域时使用的函数 escape()。它将任何非字母、数字字符转换为 ASCII 值 (以十六进制符号表示)。这样,在 body 和 subject 中的任何 & 和问号 (?) 就不会在浏览器解释 mailto: URL 时被扰乱。问号 (?) 和 & 是 mailto: URL 中的分隔符,在信件中直接使用它们肯定会扰乱对 mailto: URL 的解释。弹出新邮件窗口是通过将 mailto: 的文本赋值给 window.location 完成的。
脚本的代码
< HTML> < HEAD> < TITLE>创建 mailto: URL< /TITLE> < SCRIPT LANGUAGE="JavaScript"> < !-- // 创建 mailto: URL anchor 标记 function createMailto(sourceForm, targetField, urlType) { var to = sourceForm.to.value; var cc = sourceForm.cc.value; var bcc = sourceForm.bcc.value; var subject = sourceForm.subject.value; var body = sourceForm.body.value; var linkText= sourceForm.linkText.value;
if (linkText == "") { linkText = "Link Text"; }
var urltext = "";
// 如果此值已设置,将其包含到 URL 中 if (to != "") { urltext += to; } else { alert("Sorry, you must fill out the 'To' field"); sourceForm.to.focus(); return(1); } if (cc != "") { urltext = addDelimiter(urltext); urltext += "CC=" + cc; } if (bcc != "") { urltext = addDelimiter(urltext); urltext += "BCC=" + bcc; } if (subject != "") { urltext = addDelimiter(urltext); urltext += "Subject=" + escape(subject); } if (body != "") { urltext = addDelimiter(urltext); urltext += "Body=" + escape(body); } if (urlType == "url") { urltext = "mailto:" + urltext; } else { urltext = "< A HREF="mailto:" + urltext + "">" + linkText + "< /A>"; }
// 把新的 URL 放到表单域中 targetField.value = urltext;
// 将焦点设置到此域并高亮显示其文本—这样可以方便地剪贴新 URL targetField.focus(); targetField.select(); return(1); }
// 添加 "?" 或 "&" 作为名/值对的分隔符 function addDelimiter(inputString) { var inString = inputString;
// 如果找不到 '?',那么这是第一个名/值对 if (inString.indexOf("?") == -1) { inString += "?"; } // 否则这是随后的名/值对,添加字符 "&" else { inString += "&"; } return inString; }
// 测试 mailto: URL — 将 URL 赋值给文档的 location // 以弹出邮件窗口 function testMailto(loc) { var doc = loc;
// 如果 mailto: URL 嵌入在 anchor 标记中 if (doc.indexOf("HREF=") != -1) { // 从 anchor 标记中抽取 mailto: URL var doc = doc.substring(doc.indexOf("HREF=")+6, doc.indexOf(">")-1); }
// 将 mailto: URL 赋值给文档 (弹出一个邮件窗口) window.location = doc; }
function viewMailto(mailtoText) { alert("URL:nn" + mailtoText); } // --> < /SCRIPT> < /HEAD>
< BODY>
< FONT FACE="Arial, Helvetica" SIZE=-1> < CENTER>< H1>创建 mailto: URL< /H1>< /CENTER>
< FORM NAME="mailtoForm"> < CENTER> < TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#ffff99" > < TR ALIGN="LEFT" VALIGN="TOP"> < TD COLSPAN="4">< CENTER>< B>< FONT COLOR="#408080" SIZE=+1>在这里输入邮件细节< /FONT> < /B>< /CENTER>< /TD> < /TR> < TR ALIGN="LEFT" VALIGN="TOP"> < TD>< FONT FACE="Arial, Helvetica" SIZE=-1>< B>To:< /B>< /TD> < TD>< INPUT TYPE="text" NAME="to" SIZE=30 STYLE="background-color:'#ffcc66'">< /TD> < TD>< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Cc:< /B>< /TD> < TD>< INPUT TYPE="text" NAME="cc" SIZE=30 STYLE="background-color:'#ffcc66'">< /TD> < /TR> < TR ALIGN="LEFT" VALIGN="TOP"> < TD ALIGN="LEFT">< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Bcc:< /B>< /TD> < TD>< INPUT TYPE="text" NAME="bcc" SIZE=30 STYLE="background-color:'#ffcc66'">< /TD> < TD>< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Subject:< /B>< /TD> < TD>< INPUT TYPE="text" NAME="subject" SIZE=30 STYLE="background-color:'#ffcc66'">< /TD> < /TR> < TR ALIGN="LEFT" VALIGN="TOP"> < TD ALIGN="LEFT">< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Body:< /B>< /TD> < TD COLSPAN="4">< TEXTAREA NAME="body" WRAP="VIRTUAL" COLS=63 ROWS=3 STYLE="background-color:'#ffcc66'">< /TEXTAREA>< /TD> < /TR> < TR ALIGN="LEFT" VALIGN="TOP"> < TD ALIGN="LEFT">< FONT FACE="Arial, Helvetica" SIZE=-1>< B>Link Text:< /B>< /TD> < TD COLSPAN="3">< INPUT TYPE="text" NAME="linkText" SIZE=73 STYLE="background-color:'#ffcc66'">< /TD> < /TR> < TR> < TD COLSPAN="4">< CENTER> < INPUT TYPE="Reset" NAME="Clear" Value="Clear"> < INPUT TYPE="button" NAME="CreateURL" VALUE="Create URL" onClick="createMailto(document.mailtoForm, document.mailtoForm.text, 'url')"> < INPUT TYPE="button" NAME="CreateAnchor" VALUE="Create Link" onClick="createMailto(document.mailtoForm, document.mailtoForm.text, 'anchor')"> < /CENTER>< /TD> < /TR> < TR> < TD COLSPAN="4">< CENTER>< FONT COLOR="#408080" SIZE=+1>< B>这里是你的 mailto: URL< /B> < /FONT>< /CENTER>< /TD> < /TR> < TR> < TD ALIGN="LEFT">< FONT FACE="Arial, Helvetica" SIZE=-1>< B>mailto URL:< /B>< /TD> < TD COLSPAN="3">< INPUT TYPE="text" NAME="text" SIZE=73 STYLE="background-color:'#ffcc66'">< /TD> < /TR> < TR> < TD COLSPAN="4">< CENTER> < INPUT TYPE="button" NAME="Test" VALUE="Test URL" onClick="testMailto(document.mailtoForm.text.value)"> < INPUT TYPE="button" NAME="View" VALUE="View URL" onClick="viewMailto(document.mailtoForm.text.value)"> < /CENTER>< /TD> < /TR> < /TABLE> < /CENTER> < /FORM>
< /FONT>
< /BODY> < /HTML>
正文
生成 mailto: URL 的脚本代码
< HTML> < HEAD> < TITLE>mailto: URL 脚本< /TITLE> < /HEAD>
< BODY> < SCRIPT LANGUAGE="JavaScript"> < !-- // 显示预格式化的信件窗口 function popupMessage() { // 设置信件 var to = "gwok@yeah.net"; var cc = "dehaili@netease.com"; var bcc = "gwok@netease.com"; var subject = "Comments about your tips"; var body = "gwok and dhl," + "nntI'd like to suggest the following improvements to your tips: n" + "nFirst, ..." + "nAlso, sometimes...." + "nnSincerely,nn" + "Your faithful reader...";
// 创建邮件 URL var doc = "mailto:" + to + "?cc=" + cc + "&bcc=" + bcc + "&subject=" + escape(subject) + "&body=" + escape(body);
// 弹出信件 window.location = doc; } // --> < /SCRIPT>
< FORM> < INPUT TYPE="button" NAME="Test" Value="Test mailto: URL" onClick="popupMessage()"> < /FORM>
< /BODY>
< /HTML>
结语
本文中介绍了 JavaScript 的 mailto: URL功能,解释了它的语法以及如何从使用单一的地址属性扩展到使用信件的其它多种属性 (cc、bcc、subject 和 body)。我们准备了一个工具来创建 mailto: URL,以便你能将它复制并粘贴到你的站点页面上。到此你应该学会了如何编写这个工具的 HTML 以及它的脚本。我们还演示了一个脚本,用以生成工具 mailto: URL。你可以使用这两个工具测试 mailto: URLs。第一个提示你填写一个带有所需信息的表单。而在第二个里,你需要一些编程知识以修改脚本来支持你的特定输入。 |
|
Javascrip倒计数文本框演示
|
来源: 未知
作者: RAINMAN_NET
更新日期: [2005-02-23]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312"> <meta http-equiv="Content-type" content="text/html;charset=gb2312" /> <head> <title>No.Javascrip倒计数文本框演示</title> </head> <SCRIPT LANGUAGE="JavaScript"> <!-- var maxLen=500; function checkMaxInput(obj) { if(obj.value.length>maxLen) { obj.value=obj.value.substring(0,maxLen); remLen.innerText="你输入的内容超出了字数限制"; } else { remLen.innerText='还剩下'+(maxLen-obj.value.length)+'字';} } //--> </SCRIPT> <body> <table border="1" width="100%" cellspacing="0" cellpadding="0" bordercolorlight="#000" bgcolor="#808080" height="0"> <tr> <td width="50%"><b><font color="#fff">倒计数文本框</font></b></td> </tr> <tr> <td width="50%" height="110"> <form name="tickform"> <p align="center"> <textarea name="msgbox" rows="5" cols="31" onKeyDown="checkMaxInput(this)" onKeyUp="checkMaxInput(this)" style="background-color:#000;color:#fff;overflow:auto"></textarea> </p> </form> </td> </tr> <tr> <td width="50%"> <font align="right" id="remLen"><b></b></font></td> </tr> </table> </body> </html> |
|
JavaScript实现的数据表格:冻结列、调整列宽和客户端排序
|
来源: 未知
作者: waxdollcheung
更新日期: [2005-03-12]
根据网上的一些脚本改的,大家看一下,应该对开发有用,准备在.Net下写个Server-Side端控件 把下面的代码另存为.htm文件后看下效果。
<HTML><HEAD> <TITLE>数据表格</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <STYLE type=text/css>BODY { FONT: 12px 细明体; CURSOR: default } TD { FONT: 12px 细明体; CURSOR: default } .title { BORDER-RIGHT: #555 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #fff 1px solid; PADDING-LEFT: 4px; BACKGROUND: LightBlue; PADDING-BOTTOM: 4px; OVERFLOW: hidden; BORDER-LEFT: #fff 1px solid; CURSOR: hand; PADDING-TOP: 4px; BORDER-BOTTOM: #555 1px solid; WHITE-SPACE: nowrap } .cdata { PADDING-RIGHT: 3px; BORDER-TOP: #fff 1px solid; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; OVERFLOW: hidden; PADDING-TOP: 3px; BORDER-BOTTOM: #ddd 1px solid; WHITE-SPACE: nowrap } .coolMenu { position: absolute; height: 1px; width: 1px; font-size: 9pt; background-color: menu; border-top: 2px outset buttonhighlight; border-left: 2px outset buttonhighlight; border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; visibility: hidden; } .coolMenu .coolMenuItem { height: 20px; margin: 1px; padding-right: 10px; cursor: hand; overflow: hidden; } .coolMenu .coolMenuItem IMG { vertical-align: middle; margin-left: 1px; margin-right: 6px; } .coolMenu .coolMenuItem .coolMenuMore { font-family: webdings; } .coolMenu .coolMenuDivider { border: 1px inset; border-top-color: buttonshadow; border-bottom-color: buttonhighlight; height: 2px; overflow: hidden; margin-left: 2px; margin-top: 2px; margin-bottom: 2px; } .sinput { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: 0px; BORDER-RIGHT: 0px; BORDER-TOP: 0px; FONT-FAMILY: 宋体,Arial; FONT-SIZE: 9pt; WIDTH: 15pt; height: 12pt; }
</STYLE> <SCRIPT language=JavaScript> // 栏位标题 ( 栏位名称 # 栏位宽度 # 资料对齐 #数据类型(主要分三种数据类型:文本、数值、日期)) var DataTitles=new Array( "歌手 / 团体#90 #left#文本" , "专辑名称 #130#left#文本" , "发行公司 #110#left#文本" , "本周排名 #58 #center#数值", "排名状况 #58 #center#文本", "上周排名 #58 #center#数值", "上榜周数 #58 #center#数值", "最高名次 #58 #center#数值", "销售百分比 #70 #center#数值", "发行日期 #100 #right#日期" ) // 栏位资料 ( 二维阵列 ) var DataFields=new Array() DataFields[0] =new Array("萧亚轩萧亚轩萧亚轩萧亚轩萧亚轩萧亚轩萧亚轩萧亚轩" ,"爱的主打歌-吻" ,"维京 Virgin" ,"1" ,"持平" ,"1" ,"2","1" ,"2.9 %", "2004-1-1") DataFields[1] =new Array("张惠妹" ,"发烧" ,"华纳 Warner" ,"2" ,"持平" ,"2" ,"2","2" ,"2.1 %", "2004-2-10") DataFields[2] =new Array("陶吉吉" ,"黑色柳丁" ,"全员集合 Shock" ,"3" ,"持平" ,"3" ,"5","1" ,"1.8 %", "2004-2-09") DataFields[3] =new Array("S.H.E" ,"美丽新世界" ,"华研 HIM" ,"4" ,"持平" ,"4" ,"6","1" ,"1.2 %", "2003-1-1") DataFields[4] =new Array("艾薇儿" ,"展翅高飞" ,"博德曼 BMG" ,"5" ,"新进榜","-" ,"1","5" ,"1.1 %", "2004-4-4") DataFields[5] =new Array("任贤齐" ,"一个任贤齐" ,"滚石 Rock" ,"6" ,"新进榜","-" ,"1","6" ,"1.0 %", "2002-10-11") DataFields[6] =new Array("范逸臣" ,"范逸臣第一张专辑","丰华 Forward" ,"7" ,"持平" ,"7" ,"2","7" ,"0.9 %", "2002-12-11") DataFields[7] =new Array("谢霆锋" ,"无形的他全精选" ,"新力 Sony" ,"8" ,"下跌" ,"6" ,"4","4" ,"0.9 %", "2004-1-1") DataFields[8] =new Array("周蕙" ,"寂寞城市" ,"福茂 Decca" ,"9" ,"下跌" ,"5" ,"3","5" ,"0.8 %", "2004-1-1") DataFields[9] =new Array("周杰伦" ,"八度空间" ,"博德曼 BMG" ,"10","下跌" ,"8" ,"8","1" ,"0.8 %", "2004-1-1") DataFields[10]=new Array("酷玩乐团","玩过头" ,"科艺百代 EMI" ,"11","上升" ,"16","2","11","0.7 %", "2004-1-1") DataFields[11]=new Array("张震岳" ,"等我有一天" ,"魔岩 Magicstone","12","新进榜","-" ,"1","12","0.6 %", "2004-1-1") DataFields[12]=new Array("堂本刚" ,"红与蓝" ,"艾回 Avex" ,"13","新进榜","-" ,"1","13","0.6 %", "2004-1-1") DataFields[13]=new Array("ENERGY" ,"COME ON" ,"环球 Universal" ,"14","下跌" ,"10","9","5" ,"0.6 %", "2004-1-1") DataFields[14]=new Array("陈冠希" ,"TRANSITION" ,"艾回 Avex" ,"15","下跌" ,"9" ,"3","5" ,"0.4 %", "2004-1-1") DataFields[15]=new Array("合辑" ,"MTV 嘻哈大师" ,"环球 Universal" ,"16","下跌" ,"12","3","12","0.4 %", "2004-1-1") </SCRIPT> <SCRIPT language=JavaScript> var BoxWidth = 480 // 资料表显示宽度 ( 不含滚动条) var ShowLine = 10 // 资料表显示列数 var RsHeight = 21 // 资料列高度 var LockCols = 1 // 要锁定的栏位数 ( 由左至右 ) var RowColor = "Linen" var RowAlternativeColor = "#d9ffd3" var RowMouseOverColor = "LightSteelBlue" var RowSelectedColor = "CornflowerBlue"
//记录每次右击的列的索引。 var columnRC = 0
//记录被单击过的行的索引。 var rowC = -1;
function SetRowColor(sRowIndex, sColor) { for(i=0;i<leftTable.rows[sRowIndex].cells.length;i++) leftTable.rows[sRowIndex].cells[i].style.backgroundColor = sColor;
for(i=0;i<rightTable.rows[sRowIndex].cells.length;i++) rightTable.rows[sRowIndex].cells[i].style.backgroundColor = sColor; }
function ResetRowColor(sRowIndex) { var sColor = null; if (sRowIndex % 2 ==0) sColor = RowColor; else sColor = RowAlternativeColor; SetRowColor(sRowIndex, sColor); }
function SortTableAsc() { var cTitle=DataTitles[columnRC].split("#"); switch(cTitle[3]) { case "文本" : alert("暂时不支持文本排序!汉字的拼音问题尚未解决!"); break; case "数值" : var minIndex = 0; var tempArray = new Array(); for(i=0;i<DataFields.length;i++) { minIndex = i; var leftMin = parseFloat(DataFields[i][columnRC]); for(j=i+1;j<DataFields.length;j++) { if (leftMin>parseFloat(DataFields[j][columnRC])) { leftMin = parseFloat(DataFields[j][columnRC]); minIndex = j; } } if (minIndex != i) { for(h=0;h<DataFields[i].length;h++) { tempArray[h] = DataFields[i][h]; DataFields[i][h] = DataFields[minIndex][h]; DataFields[minIndex][h] = tempArray[h]; } } } ApplyData(); break; case "日期" : var minIndex = 0; var tempArray = new Array(); for(i=0;i<DataFields.length;i++) { //日期必须是yyyy-mm-dd格式的。 minIndex = i; var leftMin = DataFields[i][columnRC].split("-"); for(j=i+1;j<DataFields.length;j++) { var currentDate = DataFields[j][columnRC].split("-"); if ( ( parseInt(leftMin[0]) > parseInt(currentDate[0]) ) || ( ( leftMin[0] == currentDate[0] ) && ( parseInt(leftMin[1]) > parseInt(currentDate[1]) ) ) || ( ( leftMin[0] == currentDate[0] ) && ( leftMin[1] == currentDate[1] ) && ( parseInt(leftMin[2]) > parseInt(currentDate[2]) ) ) ) { leftMin[0] = currentDate[0]; leftMin[1] = currentDate[1]; leftMin[2] = currentDate[2]; minIndex = j; } } if (minIndex != i) { for(h=0;h<DataFields[i].length;h++) { tempArray[h] = DataFields[i][h]; DataFields[i][h] = DataFields[minIndex][h]; DataFields[minIndex][h] = tempArray[h]; } } } ApplyData(); break; } }
function SortTableDesc() { var cTitle=DataTitles[columnRC].split("#"); switch(cTitle[3]) { case "文本" : alert("暂时不支持文本排序!汉字的拼音问题尚未解决!"); break; case "数值" : var minIndex = 0; var tempArray = new Array(); for(i=0;i<DataFields.length;i++) { minIndex = i; var leftMin = parseFloat(DataFields[i][columnRC]); for(j=i+1;j<DataFields.length;j++) { if (leftMin<parseFloat(DataFields[j][columnRC])) { leftMin = parseFloat(DataFields[j][columnRC]); minIndex = j; } } if (minIndex != i) { for(h=0;h<DataFields[i].length;h++) { tempArray[h] = DataFields[i][h]; DataFields[i][h] = DataFields[minIndex][h]; DataFields[minIndex][h] = tempArray[h]; } } } ApplyData(); break; case "日期" : var minIndex = 0; var tempArray = new Array(); for(i=0;i<DataFields.length;i++) { //日期必须是yyyy-mm-dd格式的。 minIndex = i; var leftMin = DataFields[i][columnRC].split("-"); for(j=i+1;j<DataFields.length;j++) { var currentDate = DataFields[j][columnRC].split("-"); if ( ( parseInt(leftMin[0]) < parseInt(currentDate[0]) ) || ( ( leftMin[0] == currentDate[0] ) && ( parseInt(leftMin[1]) < parseInt(currentDate[1]) ) ) || ( ( leftMin[0] == currentDate[0] ) && ( leftMin[1] == currentDate[1] ) && ( parseInt(leftMin[2]) < parseInt(currentDate[2]) ) ) ) { leftMin[0] = currentDate[0]; leftMin[1] = currentDate[1]; leftMin[2] = currentDate[2]; minIndex = j; } } if (minIndex != i) { for(h=0;h<DataFields[i].length;h++) { tempArray[h] = DataFields[i][h]; DataFields[i][h] = DataFields[minIndex][h]; DataFields[minIndex][h] = tempArray[h]; } } } ApplyData(); break; } }
function WriteTable(){ // 写入表格 var iBoxWidth=BoxWidth var NewHTML="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>\ <td><div style=\"width:100%;overflow-x:scroll\">\ <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"leftHead\"><tr>" for(i=0;i<DataTitles.length;i++){ if(i<LockCols){ var cTitle=DataTitles[i].split("#") iBoxWidth-=cTitle[1] NewHTML+="<td><div class=\"title\" style=\"width:"+cTitle[1]+"px;height:"+RsHeight+"px\" align=\"" + cTitle[2] + "\" oncontextmenu=\"HeadRightClick()\">"+cTitle[0]+"</div></td>" } } NewHTML+="</tr>\ <tr><td colspan=\""+LockCols+"\">\ <div id=\"DataFrame1\" style=\"position:relative;width:100%;overflow:hidden\">\ <div id=\"DataGroup1\" style=\"position:relative\"></div></div>\ </td></tr></table></div></td>\ <td valign=\"top\"><div style=\"width:"+iBoxWidth+"px;overflow-x:scroll\">\ <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"rightHead\"><tr>" for(i=0;i<DataTitles.length;i++){ if(i>=LockCols){ var cTitle=DataTitles[i].split("#") NewHTML+="<td><div class=\"title\" style=\"width:"+cTitle[1]+"px;height:"+RsHeight+"px\" align=\"" + cTitle[2] + "\" oncontextmenu=\"HeadRightClick()\">"+cTitle[0]+"</div></td>" } } NewHTML+="</tr>\ <tr><td colspan=\""+(DataTitles.length-LockCols)+"\">\ <div id=\"DataFrame2\" style=\"position:relative;width:100%;overflow:hidden\">\ <div id=\"DataGroup2\" style=\"position:relative\"></div>\ </div></td></tr></table>\ </div></td><td valign=\"top\">\ <div id=\"DataFrame3\" style=\"position:relative;background:#000;overflow-y:scroll\" onscroll=\"SYNC_Roll()\">\ <div id=\"DataGroup3\" style=\"position:relative;width:1px;visibility:hidden\"></div>\ </div></td></tr></table>" DataTable.innerHTML=NewHTML ApplyData() } function ApplyData(){ // 写入资料 var NewHTML="<table id=\"leftTable\" onMouseOver=\"overcolor()\" onClick=\"clickColor()\" onMouseOut=\"outcolor()\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" for(i=0;i<DataFields.length;i++){ if (i %2 == 0) NewHTML+="<tr bgcolor=\"" + RowColor + "\">" else NewHTML+="<tr bgcolor=\"" + RowAlternativeColor + "\">" for(j=0;j<DataTitles.length;j++){ if(j<LockCols){ var cTitle=DataTitles[j].split("#") NewHTML+="<td><div class=\"cdata\" style=\"width:"+cTitle[1]+"px;height:"+RsHeight+"px;text-align:"+cTitle[2]+"\">"+DataFields[i][j]+"</div></td>" } } NewHTML+="</tr>" } NewHTML+="</table>" DataGroup1.innerHTML=NewHTML
var NewHTML="<table id=\"rightTable\" onMouseOver=\"overcolor()\" onClick=\"clickColor()\" onMouseOut=\"outcolor()\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" for(i=0;i<DataFields.length;i++){ if (i %2 == 0) NewHTML+="<tr bgcolor=\"" + RowColor + "\">" else NewHTML+="<tr bgcolor=\"" + RowAlternativeColor + "\">" for(j=0;j<DataTitles.length;j++){ if(j>=LockCols){ var cTitle=DataTitles[j].split("#") NewHTML+="<td><div class=\"cdata\" style=\"width:"+cTitle[1]+"px;height:"+RsHeight+"px;text-align:"+cTitle[2]+"\">"+DataFields[i][j]+"</div></td>" } } NewHTML+="</tr>" } NewHTML+="</table>" DataGroup2.innerHTML=NewHTML DataFrame1.style.pixelHeight=RsHeight*ShowLine DataFrame2.style.pixelHeight=RsHeight*ShowLine DataFrame3.style.pixelHeight=RsHeight*ShowLine+RsHeight DataGroup3.style.pixelHeight=RsHeight*(DataFields.length+1) }
function ResetTable(){
var iBoxWidth=0 for(i=0;i<DataTitles.length;i++){ if(i<(columnRC+1)){ var cTitle=DataTitles[i].split("#") iBoxWidth+=parseInt(cTitle[1]) } } if(iBoxWidth>BoxWidth){ var Sure=confirm("\n锁定栏位的宽度大於资料表显示的宽 \n\n度,这可能会造成版面显示不正常。\n\n\n您确定要继续吗?") }else{ Sure=true } if(Sure){ LockCols=(LockCols==columnRC+1)?0:columnRC+1 WriteTable() } }
function SYNC_Roll(){ DataGroup1.style.posTop=-DataFrame3.scrollTop DataGroup2.style.posTop=-DataFrame3.scrollTop }
function clickColor() { try { var oEl = event.srcElement; if (oEl) if (oEl.tagName == "DIV") { try { oEl = oEl.parentElement.parentElement; } catch (e) { return; } } if (oEl.tagName == "TD") oEl = oEl.parentElement;
var sindex = oEl.rowIndex; SetRowColor(sindex, RowSelectedColor); if (rowC >= 0) if (rowC != sindex) ResetRowColor(rowC); rowC = sindex; } catch (e) {} }
function overcolor() { var oEl = event.srcElement; if (oEl) if (oEl.tagName == "DIV") { try { oEl = oEl.parentElement.parentElement; } catch (e) { return; } } if (oEl.tagName == "TD") oEl = oEl.parentElement;
var sindex = oEl.rowIndex; if (rowC >= 0) if (sindex == rowC) return; SetRowColor(sindex, RowMouseOverColor); }
function outcolor() { var oEl = event.srcElement; if (oEl) if (oEl.tagName == "DIV") { try { oEl = oEl.parentElement.parentElement; } catch (e) { return; } } if (oEl.tagName == "TD") oEl = oEl.parentElement;
var sindex = oEl.rowIndex; if (rowC >= 0) if (sindex == rowC) return; ResetRowColor(sindex); }
function HeadRightClick() { var ev = window.event; var el = ev.srcElement; if (el.tagName == "DIV") { showMenu(ev.clientX, ev.clientY); ev.cancelBubble = true; ev.returnValue = false; var ep = el.parentElement; columnRC = ep.cellIndex; ep = el.parentElement.parentElement.parentElement.parentElement; if (ep.tagName == "TABLE") { if (ep.id == "rightHead") columnRC += LockCols; } } }
function showMenu(x, y) { var intRightEdge = window.document.body.clientWidth - x; var intBottomEdge = window.document.body.clientHeight - y; var intScrollLeft = window.document.body.scrollLeft + x; var intScrollTop = window.document.body.scrollTop + y;
if (intRightEdge < objHeadMenu.offsetWidth) objHeadMenu.style.left = intScrollLeft - objHeadMenu.offsetWidth; else objHeadMenu.style.left = intScrollLeft;
if (intBottomEdge < objHeadMenu.offsetHeight) objHeadMenu.style.top = intScrollTop - objHeadMenu.offsetHeight; else objHeadMenu.style.top = intScrollTop;
objHeadMenu.style.zIndex = 50; objHeadMenu.style.filter = "blendTrans(duration=0.50) progid:DXImageTransform.Microsoft.Shadow(color=#323232, direction=135, strength=3)"; if (objHeadMenu.filters.blendTrans.status != 2) { objHeadMenu.filters.blendTrans.apply(); objHeadMenu.style.visibility = "visible"; objHeadMenu.filters.blendTrans.play(); } }
function hideMenu() { objHeadMenu.style.filter = "blendTrans(duration=0.50) progid:DXImageTransform.Microsoft.Shadow(color=#323232, direction=135, strength=3)"; if (objHeadMenu.filters.blendTrans.status != 2) { objHeadMenu.filters.blendTrans.apply(); objHeadMenu.style.visibility = "hidden"; objHeadMenu.filters.blendTrans.play(); } }
//加列宽 function SetCWP(valWidth) { var cTitle = DataTitles[columnRC].split("#"); var cWidth = parseInt(cTitle[1]) + parseInt(valWidth); DataTitles[columnRC] = cTitle[0] + "#" + cWidth + "#" + cTitle[2] + "#" + cTitle[3]; WriteTable(); }
//减列宽 function SetCWM(valWidth) { var cTitle = DataTitles[columnRC].split("#"); var cWidth = parseInt(cTitle[1]) - parseInt(valWidth); if (cWidth <= 0) return; DataTitles[columnRC] = cTitle[0] + "#" + cWidth + "#" + cTitle[2] + "#" + cTitle[3]; WriteTable(); }
/* 右键菜单上的两个调整列宽的文本框的KeyDown事件,用于捕捉"Enter"时调整列宽并隐藏菜单 */ function CWKeyDown() { if (event.keyCode == 13) { var oEl = event.srcElement; if (oEl.id == "txtCWPlus") SetCWP(txtCWPlus.value); if (oEl.id == "txtCWMinus") SetCWM(txtCWMinus.value); hideMenu(); } }
function createMenu() { var txtHTML = "<div class=\"coolMenuItem\" style='padding-top: 1px;' onclick=\"SortTableAsc();hideMenu();\"><img src=\"images/asc.gif\" width=\"16\" height=\"16\">按升序排序</div>"; txtHTML += "<div class=\"coolMenuItem\" style='padding-top: 1px;' onclick=\"SortTableDesc();hideMenu();\"><img src=\"images/desc.gif\" width=\"16\" height=\"16\">按降序排序</div>"; txtHTML +="<div class=\"coolMenuDivider\"></div>"; txtHTML += "<div class=\"coolMenuItem\" style='padding-top: 1px;' onclick=\"ResetTable();hideMenu();\"><img src=\"images/blank.gif\" width=\"16\" height=\"16\">锁定列</div>"; txtHTML += "<div class=\"coolMenuDivider\"></div>"; txtHTML += "<div class=\"coolMenuItem\" style='padding-top: 1px;' onClick=\"SetCWP(txtCWPlus.value);\" onMouseOver=\"txtCWPlus.focus();\"><img src=\"images/blank.gif\" width=\"16\" height=\"16\">列宽 + <input type=\"text\" id=\"txtCWPlus\" class=\"sinput\" value=\"20\" onKeyDown=\"CWKeyDown();\"> px</div>"; txtHTML += "<div class=\"coolMenuItem\" style='padding-top: 1px;' onclick=\"SetCWM(txtCWMinus.value);\" onMouseOver=\"txtCWMinus.focus()\"><img src=\"images/blank.gif\" width=\"16\" height=\"16\">列宽 - <input type=\"text\" id=\"txtCWMinus\" class=\"sinput\" value=\"20\" onKeyDown=\"CWKeyDown();\"> px</div>"; objHeadMenu.className = "coolMenu"; objHeadMenu.innerHTML = txtHTML; window.document.body.insertAdjacentElement("afterBegin", objHeadMenu); }
</SCRIPT> <META content="MSHTML 6.00.2800.1170" name=GENERATOR> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </script> </HEAD> <BODY onLoad="WriteTable();createMenu();" onClick="hideMenu();"> <CENTER> <H4> </H4> <!--// 资料表 ( 开始 ) //--> <TABLE cellSpacing=0 cellPadding=0 border=0> <TBODY> <TR> <TD style="BORDER-RIGHT: white 2px inset; BORDER-TOP: white 2px inset; BORDER-LEFT: white 2px inset; BORDER-BOTTOM: white 2px inset; BACKGROUND-COLOR: scrollbar"> <DIV id=DataTable> </DIV></TD></TR></TBODY></TABLE><!--// 资料表 ( 结束 ) //--> <P> </P> <div id="objHeadMenu" style="position:absolute; width:124px; height:13px; z-index:1; left: 525px; top: 164px; visibility: hidden;" oncontextmenu="return false;"></div> </CENTER></BODY></HTML>
|
|
萬年厲
|
點擊下面[运行代码]按扭運行以下代码,如果看不到月厉請刷新一次点击[运行代码]打開的網頁: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0103)file://C:\Documents%20and%20Settings\KenFu\Local%20Settings\Temporary%20Internet%20Files\OLK6D\月曆.htm -->
<!-- saved from url=(0049)http://joke.maillist.com.tw/files/08/00080501.htm --><!-- saved from url=(0022)http://internet.e-mail --><HTML><HEAD><TITLE>月曆</TITLE><!-- ********************************************
1900-2050年國曆與農曆之月曆程式 (IE版)
版權所有(c), 任何形式之引用或轉載前請來信告知!!
歡迎來信互相討論研究與指正誤謬。
林洵賢(Sean Lin) sean@4u.net
*************************************************
程式最後修正:
2000-8-4
- 修正不同語系的 Windows 造成農曆無法計算
(此錯誤為微軟 Bug, 感謝 Stanley Tsai 協助測試)
- 統一日期時間格式為控制台的國別語系所設定之設格式
2000-8-1
- 修正某些時區日光節約時間自動調整
- 修正選擇時區畫面跳動問題
- 新增時區移至地圖中央
- 新增詳細日期資料透明及陰影呈現
2000-7-23
- 月曆全部改為 Javascript 重寫
- 修正若國曆同月跨三個農曆月,節日排錯問題
- 新增顯示詳細日期資料
- 修正亞歷桑那州不需日光節約時間問題
************************************************** -->
<META
content="農曆; 陽曆; 月曆; 節日; 時區; 節氣; 八字; 干支; 生肖; gregorian solar; chinese lunar; calendar;"
name=keywords>
<META content=All name=robots>
<META content="gregorian solar calendar and chinese lunar calendar"
name=description>
<META http-equiv=Content-Type content="text/html; charset=big5">
<script>window.moveTo(0,0)</script>
<SCRIPT language=JavaScript>
<!--
/*****************************************************************************
日期資料
*****************************************************************************/
var lunarInfo=new Array(
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,
0x14b63);
var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var Animals=new Array("鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬");
var solarTerm = new Array("小寒","大寒","立春","雨水","驚蟄","春分","清明","穀雨","立夏","小滿","芒種","夏至","小暑","大暑","立秋","處暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至");
var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758);
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
var nStr2 = new Array('初','十','廿','卅','卌');
var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
//國曆節日 *表示放假日
var sFtv = new Array(
"0101*元旦",
"0115 藥師節",
"0123 自由日",
"0204 農民節",
"0214 情人節",
"0215 戲劇節",
"0228*和平紀念日",
"0308 婦女節",
"0312 植樹節",
"0320 郵政節",
"0325 美術節",
"0329 青年節 革命先烈紀念日",
"0401 愚人節 主計節",
"0404 婦幼節",
"0405 音樂節",
"0501 勞動節",
"0504 文藝節",
"0505 舞蹈節",
"0512 護士節",
"0603 禁煙節",
"0614 Flag Day",
"0701 Canada Day",
"0704 Independence Day",
"0711 航海節",
"0808 父親節",
"0827 鄭成功\誕辰",
"0901 記者節",
"0903 抗戰紀念",
"0913 法律日",
"0910 教師節 孔子誕辰",
"1006 老人節",
"1001*國慶紀念日",
"1021 華僑節",
"1024 聯合國日",
"1101 商人節",
"1111 工業節 地政節 Veteran's / Remembrance Day",
"1205 海員節",
"1210 人權節",
"1225 Christmas Day",
"1226 Boxing Day",
"1227 建築師節");
//農曆節日 *表示放假日
var lFtv = new Array(
"0101*春節",
"0102*回娘家",
"0103*祭祖",
"0104 迎神",
"0105 開市",
"0106 清水祖師誕辰 ",
"0109 天公生 (玉皇大帝誕辰)",
"0115 元宵節 觀光節 炬光節 門神千秋",
"0202 頭牙 土地公生 (福德正神誕辰)",
"0203 文昌帝君誕辰",
"0219 觀世音菩薩誕辰",
"0303 玄天上帝誕辰",
"0315 保生大帝誕辰",
"0323 媽祖生 (天上聖母誕辰)",
"0408 浴彿節 (佛祖聖誕)",
"0505*端午節 詩人節",
"0619 觀世音菩薩得道",
"0701 開鬼門",
"0707 七夕情人節 七娘媽生 (七星娘娘誕辰)",
"0715 中元節",
"0718 瑤池金母誕辰",
"0800 關鬼門",
"0815*中秋節",
"0909 重陽節",
"1003 助順將軍誕辰",
"1005 達摩祖師誕辰",
"1208 臘八節",
"1216 尾牙",
"1224 送神",
"0100*除夕");
//某月的第幾個星期幾
var wFtv = new Array(
"0131 Martin Luther King Day",
"0231 President's Day",
"0520 母親節",
"0530 Armed Forces Day",
"0531 Victoria Day",
"0716 合作節",
"0730 被奴役國家週",
"0811 Civic Holiday",
"0911 Labor Holiday",
"1021 Columbus Day",
"1144 Thanksgiving");
/*****************************************************************************
日期計算
*****************************************************************************/
//====================================== 傳回農曆 y年的總天數
function lYearDays(y) {
var i, sum = 348;
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0;
return(sum+leapDays(y));
}
//====================================== 傳回農曆 y年閏月的天數
function leapDays(y) {
if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29);
else return(0);
}
//====================================== 傳回農曆 y年閏哪個月 1-12 , 沒閏傳回 0
function leapMonth(y) {
return(lunarInfo[y-1900] & 0xf);
}
//====================================== 傳回農曆 y年m月的總天數
function monthDays(y,m) {
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
}
//====================================== 算出農曆, 傳入日期物件, 傳回農曆日期物件
// 該物件屬性有 .year .month .day .isLeap .yearCyl .dayCyl .monCyl
function Lunar(objDate) {
var i, leap=0, temp=0;
var offset = (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate()) - Date.UTC(1900,0,31))/86400000;
this.dayCyl = offset + 40;
this.monCyl = 14;
for(i=1900; i<2050 && offset>0; i++) {
temp = lYearDays(i);
offset -= temp;
this.monCyl += 12;
}
if(offset<0) {
offset += temp;
i--;
this.monCyl -= 12;
}
this.year = i;
this.yearCyl = i-1864;
leap = leapMonth(i); //閏哪個月
this.isLeap = false;
for(i=1; i<13 && offset>0; i++) {
//閏月
if(leap>0 && i==(leap+1) && this.isLeap==false)
{ --i; this.isLeap = true; temp = leapDays(this.year); }
else
{ temp = monthDays(this.year, i); }
//解除閏月
if(this.isLeap==true && i==(leap+1)) this.isLeap = false;
offset -= temp;
if(this.isLeap == false) this.monCyl ++;
}
if(offset==0 && leap>0 && i==leap+1)
if(this.isLeap)
{ this.isLeap = false; }
else
{ this.isLeap = true; --i; --this.monCyl;}
if(offset<0){ offset += temp; --i; --this.monCyl; }
this.month = i;
this.day = offset + 1;
}
//==============================傳回國曆 y年某m+1月的天數
function solarDays(y,m) {
if(m==1)
return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
else
return(solarMonth[m]);
}
//============================== 傳入 offset 傳回干支, 0=甲子
function cyclical(num) {
return(Gan[num%10]+Zhi[num%12]);
}
//============================== 月曆屬性
function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {
this.isToday = false;
//國曆
this.sYear = sYear;
this.sMonth = sMonth;
this.sDay = sDay;
this.week = week;
//農曆
this.lYear = lYear;
this.lMonth = lMonth;
this.lDay = lDay;
this.isLeap = isLeap;
//干支
this.cYear = cYear;
this.cMonth = cMonth;
this.cDay = cDay;
this.color = '';
this.lunarFestival = ''; //農曆節日
this.solarFestival = ''; //國曆節日
this.solarTerms = ''; //節氣
}
//===== 某年的第n個節氣為幾日(從0小寒起算)
function sTerm(y,n) {
var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) );
return(offDate.getUTCDate());
}
//============================== 傳回月曆物件 (y年,m+1月)
function calendar(y,m) {
var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2;
var lDPOS = new Array(3);
var n = 0;
var firstLM = 0;
sDObj = new Date(y,m,1,0,0,0,0); //當月一日日期
this.length = solarDays(y,m); //國曆當月天數
this.firstWeek = sDObj.getDay(); //國曆當月1日星期幾
for(var i=0;i<this.length;i++) {
if(lD>lX) {
sDObj = new Date(y,m,i+1); //當月一日日期
lDObj = new Lunar(sDObj); //農曆
lY = lDObj.year; //農曆年
lM = lDObj.month; //農曆月
lD = lDObj.day; //農曆日
lL = lDObj.isLeap; //農曆是否閏月
lX = lL? leapDays(lY): monthDays(lY,lM); //農曆當月最後一天
if(n==0) firstLM = lM;
lDPOS[n++] = i-lD+1;
}
//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
lY, lM, lD++, lL,
cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) );
if((i+this.firstWeek)%7==0) this[i].color = 'red'; //週日顏色
if((i+this.firstWeek)%14==13) this[i].color = 'red'; //週休二日顏色
}
//節氣
tmp1=sTerm(y,m*2 )-1;
tmp2=sTerm(y,m*2+1)-1;
this[tmp1].solarTerms = solarTerm[m*2];
this[tmp2].solarTerms = solarTerm[m*2+1];
if(m==3) this[tmp1].color = 'red'; //清明顏色
//國曆節日
for(i in sFtv)
if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' ';
if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red';
}
//月週節日
for(i in wFtv)
if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
tmp1=Number(RegExp.$2);
tmp2=Number(RegExp.$3);
this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' ';
}
//農曆節日
for(i in lFtv)
if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
tmp1=Number(RegExp.$1)-firstLM;
if(tmp1==-11) tmp1=1;
if(tmp1 >=0 && tmp1<n) {
tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1;
if( tmp2 >= 0 && tmp2<this.length) {
this[tmp2].lunarFestival += RegExp.$4 + ' ';
if(RegExp.$3=='*') this[tmp2].color = 'red';
}
}
}
if(m==2) this[20].solarFestival = this[20].solarFestival+unescape('%20%u6D35%u8CE2%u751F%u65E5');
//黑色星期五
if((this.firstWeek+12)%7==5)
this[12].solarFestival += '黑色星期五 ';
//今日
if(y==tY && m==tM) this[tD-1].isToday = true;
}
//====================== 中文日期
function cDay(d){
var s;
switch (d) {
case 10:
s = '初十'; break;
case 20:
s = '二十'; break;
break;
case 30:
s = '三十'; break;
break;
default :
s = nStr2[Math.floor(d/10)];
s += nStr1[d%10];
}
return(s);
}
///////////////////////////////////////////////////////////////////////////////
var cld;
function drawCld(SY,SM) {
var i,sD,s,size;
cld = new calendar(SY,SM);
if(SY>1874 && SY<1909) yDisplay = '光緒' + (((SY-1874)==1)?'元':SY-1874);
if(SY>1908 && SY<1912) yDisplay = '宣統' + (((SY-1908)==1)?'元':SY-1908);
if(SY>1949) yDisplay = '建國' + (((SY-1949)==1)?'元':SY-1949);
GZ.innerHTML = yDisplay +'年 --- 農曆歲次' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'】';
YMBG.innerHTML = " " + SY + "<BR> " + monthName[SM];
for(i=0;i<42;i++) {
sObj=eval('SD'+ i);
lObj=eval('LD'+ i);
sObj.className = '';
sD = i - cld.firstWeek;
if(sD>-1 && sD<cld.length) { //日期內
sObj.innerHTML = sD+1;
if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日顏色
sObj.style.color = cld[sD].color; //國定假日顏色
if(cld[sD].lDay==1) //顯示農曆月
lObj.innerHTML = '<b>'+(cld[sD].isLeap?'閏':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
else //顯示農曆日
lObj.innerHTML = cDay(cld[sD].lDay);
s=cld[sD].lunarFestival;
if(s.length>0) { //農曆節日
if(s.length>6) s = s.substr(0, 4)+'…';
s = s.fontcolor('red');
}
else { //國曆節日
s=cld[sD].solarFestival;
if(s.length>0) {
size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
if(s.length>size+2) s = s.substr(0, size)+'…';
s = s.fontcolor('blue');
}
else { //廿四節氣
s=cld[sD].solarTerms;
if(s.length>0) s = s.fontcolor('limegreen');
}
}
if(s.length>0) lObj.innerHTML = s;
}
else { //非日期
sObj.innerHTML = '';
lObj.innerHTML = '';
}
}
}
function changeCld() {
var y,m;
y=CLD.SY.selectedIndex+1900;
m=CLD.SM.selectedIndex;
drawCld(y,m);
}
function pushBtm(K) {
switch (K){
case 'YU' :
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
break;
case 'YD' :
if(CLD.SY.selectedIndex<150) CLD.SY.selectedIndex++;
break;
case 'MU' :
if(CLD.SM.selectedIndex>0) {
CLD.SM.selectedIndex--;
}
else {
CLD.SM.selectedIndex=11;
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
}
break;
case 'MD' :
if(CLD.SM.selectedIndex<11) {
CLD.SM.selectedIndex++;
}
else {
CLD.SM.selectedIndex=0;
if(CLD.SY.selectedIndex<150) CLD.SY.selectedIndex++;
}
break;
default :
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
}
changeCld();
}
var Today = new Date();
var tY = Today.getFullYear();
var tM = Today.getMonth();
var tD = Today.getDate();
//////////////////////////////////////////////////////////////////////////////
var width = "130";
var offsetx = 2;
var offsety = 8;
var x = 0;
var y = 0;
var snow = 0;
var sw = 0;
var cnt = 0;
var dStyle;
document.onmousemove = mEvn;
//顯示詳細日期資料
function mOvr(v) {
var s,festival;
var sObj=eval('SD'+ v);
var d=sObj.innerHTML-1;
//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
if(sObj.innerHTML!='') {
sObj.style.cursor = 's-resize';
if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
festival = '';
else
festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
'<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+
'</TR></TABLE>';
s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066" style="filter:Alpha(opacity=80)"><TR><TD>' +
'<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
'<font color="violet">農曆'+(cld[d].isLeap?'閏 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
'<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
'</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';
document.all["detail"].innerHTML = s;
if (snow == 0) {
dStyle.left = x+offsetx-(width/2);
dStyle.top = y+offsety;
dStyle.visibility = "visible";
snow = 1;
}
}
}
//清除詳細日期資料
function mOut() {
if ( cnt >= 1 ) { sw = 0; }
if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
else cnt++;
}
//取得位置
function mEvn() {
x=event.x;
y=event.y;
if (document.body.scrollLeft)
{x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
if (snow){
dStyle.left = x+offsetx-(width/2);
dStyle.top = y+offsety;
}
}
///////////////////////////////////////////////////////////////////////////
function initialize() {
dStyle = detail.style;
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
drawCld(tY,tM);
CLD.TZ.selectedIndex=getCookie("TZ");
changeTZ();
tick();
}
function terminate(){
setCookie("TZ",CLD.TZ.selectedIndex);
}
function setCookie(name, value) {
var today = new Date();
var expires = new Date();
expires.setTime(today.getTime() + 1000*60*60*24*365);
document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString();
}
function getCookie(Name) {
var search = Name + "=";
if(document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if(offset != -1) {
offset += search.length;
end = document.cookie.indexOf(";", offset);
if(end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(offset, end));
}
else return "";
}
}
/////////////////////////////////////////////////////////
function changeTZ() {
CITY.innerHTML = CLD.TZ.value.substr(6);
var pos = Math.floor(CLD.TZ.value.substr(0,3));
if(pos<0) pos+=24;
pos*=-10;
world.style.left = pos;
}
function tick() {
var today;
today = new Date();
Clock.innerHTML = today.toLocaleString();
Clock2.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value);
window.setTimeout("tick()", 1000);
}
//-->
</SCRIPT>
<SCRIPT language=VBScript>
<!--
'===== 算世界時間
Function TimeAdd(UTC,T)
Dim PlusMinus, DST, y
If Left(T,1)="-" Then PlusMinus = -1 Else PlusMinus = 1
UTC=Right(UTC,Len(UTC)-5)
UTC=Left(UTC,Len(UTC)-4)
y = Year(UTC)
TimeAdd=DateAdd("n", (Cint(Mid(T,2,2))*60 + Cint(Mid(T,4,2))) * PlusMinus, UTC)
'美國日光節約期間: 4月第一個星日00:00 至 10月最後一個星期日00:00
If Mid(T,6,1)="*" And DateSerial(y,4,(9 - Weekday(DateSerial(y,4,1)) mod 7) ) <= TimeAdd And DateSerial(y,10,31 - Weekday(DateSerial(y,10,31))) >= TimeAdd Then
TimeAdd=DateAdd("h", 1, TimeAdd)
tSave.innerHTML = "R"
tSave.style.color= "Red"
Else
tSave.innerHTML = "R"
tSave.style.color= "White"
End If
TimeAdd = FormatDateTime(Date, 1) & " " & FormatDateTime(TimeAdd,3)
End Function
'-->
</SCRIPT>
<STYLE>.todyaColor {
BACKGROUND-COLOR: aqua
}
</STYLE>
<META content="MSHTML 5.50.4937.800" name=GENERATOR></HEAD>
<BODY onload=initialize() onunload=terminate()>
<SCRIPT language=JavaScript><!--
if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
document.write("<h1>你的瀏覽器無法執行此程式。</h1>此程式需在 IE4 以後的版本才能執行!!")
//--></SCRIPT>
<DIV id=detail
style="FILTER: shadow(color=#333333,direction=135); WIDTH: 140px; POSITION: absolute; HEIGHT: 120px;"></DIV>
<CENTER>
<FORM name=CLD>
<TABLE border=1 cellpadding="0" cellspacing="0" style='border-collapse:collapse;' >
<TBODY>
<TR>
<TD vAlign=top align=middle width=240 ><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="5"></td>
</tr>
</table>
<FONT style="FONT-SIZE: 12pt"
size=5 color=#990000>本地時間</FONT><BR>
<FONT id=Clock face=Arial color=#000080 size=4
align="center"> </FONT>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="1" bgcolor="#E4E4E4"></td>
</tr>
<tr>
<td height="8"></td>
</tr>
</table>
<FONT id=CITY
style="FONT-SIZE: 12pt; WIDTH: 150px; FONT-FAMILY: '新細明體'; HEIGHT: 28px" color=#990000> </FONT><br><FONT
id=Clock2 face=Arial color=#000080 size=4 align="center"> </FONT>
<TABLE style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings">
<TBODY>
<TR>
<TD align=middle><hr width="100%" size="1" color="#ff6666">
Ú
<DIV
style="OVERFLOW: hidden; WIDTH: 240px; HEIGHT: 120px; BACKGROUND-COLOR: darkblue"><FONT
id=world
style="FONT-SIZE: 185px; LEFT: 0px; COLOR: green; FONT-FAMILY: Webdings; POSITION: relative; TOP: -26px; background-color: #FFFFFF; layer-background-color: #FFFFFF; border: 1px none #000000;" name="world">ûû</FONT>
</DIV>
Ù </TD></TR></TBODY></TABLE>
<hr width="100%" size="1" color="#ff6666">
<!--時區 *表示自動調整為日光節約時間-->
<FONT
id=tSave
style="FONT-SIZE: 18pt; COLOR: white; FONT-FAMILY: Wingdings"> </FONT><FONT
style="FONT-SIZE: 9pt" size=2>選擇地區
<SELECT style="FONT-SIZE: 9pt;width:150px;background-color:#FFeeee;"
onchange=changeTZ() name=TZ>
<OPTION
value="-1200 安尼威土克、瓜甲蘭 " selected>國際換日線
<OPTION
value="-1100 中途島、薩摩亞群島 ">薩摩亞
<OPTION
value="-1000 夏威夷 ">夏威夷
<OPTION
value="-0900*阿拉斯加 ">阿拉斯加
<OPTION
value="-0800*太平洋時間(美加)、提亞納 ">太平洋
<OPTION
value="-0700*山區時間(美加) ">美加山區
<OPTION
value="-0700 亞歷桑那 ">美國山區
<OPTION
value="-0600 中美洲 ">中美洲
<OPTION
value="-0600*中部時間(美加) ">美加中部
<OPTION
value="-0600*墨西哥市 ">墨西哥
<OPTION
value="-0600 薩克其萬(加拿大) ">加拿大中部
<OPTION
value="-0500 波哥大、利馬、祁多 ">南美洲太平洋
<OPTION
value="-0500*東部時間(美加) ">美加東部
<OPTION
value="-0500 印第安納(東部) ">美東
<OPTION
value="-0400*聖地牙哥 ">太平洋SA
<OPTION
value="-0400 加拉卡斯、拉帕茲 ">南美洲西部
<OPTION
value="-0400*大西洋時間(加拿大) ">大西洋
<OPTION
value="-0330*新島(加拿大東岸) ">紐芬蘭
<OPTION
value="-0300*格陵蘭 ">格陵蘭
<OPTION
value="-0300*波西里亞 ">東南美洲
<OPTION
value="-0300 布魯諾斯愛麗斯、喬治城 ">南美洲東部
<OPTION
value="-0200*大西洋中部 ">大西洋中部
<OPTION
value="-0100 維德角群島 ">維德角
<OPTION
value="-0100*亞速爾群島 ">亞速爾
<OPTION
value="+0000 卡薩布蘭卡、莫洛維亞(賴比瑞亞) ">格林威治
<OPTION
value="+0000*格林威治:都柏林、愛丁堡、里斯本、倫敦 ">GMT
<OPTION
value="+0100 中西非 ">中西非
<OPTION
value="+0100*比歐瑞德、布拉提斯拉瓦、布達佩斯、布拉格 ">中歐
<OPTION
value="+0100*布魯賽爾、哥本哈根、馬德里、巴黎 ">羅馬
<OPTION
value="+0100*沙拉耶佛、斯科比亞、蘇非亞、華沙、札格瑞 ">中歐
<OPTION
value=+0100*阿姆斯特丹、柏林、羅馬、斯德哥爾摩、維也納>西歐
<OPTION
value="+0200*布加勒斯特 ">西歐
<OPTION
value="+0200 耶路薩冷 ">耶路薩冷
<OPTION
value="+0200*開羅 ">埃及
<OPTION
value="+0200*雅典、伊斯坦堡、明斯克 ">GTB
<OPTION
value="+0200 赫拉雷、皮托里 ">南非
<OPTION
value="+0200*赫爾辛基、里加、泰里安 ">FLE芬蘭
<OPTION
value="+0300*巴格達 ">阿拉伯
<OPTION
value="+0300 奈洛比 ">東非
<OPTION
value="+0300 科威特、里雅德 ">阿拉伯
<OPTION
value="+0300*莫斯科、聖彼得堡、窩瓦格瑞德 ">俄羅斯
<OPTION
value="+0330*德黑蘭 ">伊朗
<OPTION
value="+0400*巴古、塔布理斯、費里凡 ">高加索
<OPTION
value="+0400 阿布達比、莫斯凱 ">阿拉伯
<OPTION
value="+0430 喀布爾 ">阿富汗
<OPTION
value="+0500*伊卡特林堡 ">伊卡特林堡
<OPTION
value="+0500 伊斯蘭馬巴德、克洛奇、塔須肯 ">西亞
<OPTION
value="+0530 加爾各答、辰內、孟拜、新德里 ">印度
<OPTION
value="+0545 加德滿都 ">尼泊爾
<OPTION
value="+0600*阿馬提、諾曼斯比爾斯科 ">中北亞
<OPTION
value="+0600 阿斯塔那、達卡 ">中亞
<OPTION
value="+0600 斯里哈亞華登尼普拉 ">斯里蘭卡
<OPTION
value="+0630 仰光 ">緬甸
<OPTION
value="+0700*克拉斯諾亞爾斯克 ">北亞
<OPTION
value="+0700 曼谷、河內、雅加達 ">東南亞
<OPTION
value="+0800 北京、重慶、香港、烏魯木齊 ">中國
<OPTION
value="+0800 台北 ">台灣
<OPTION
value="+0800*伊爾庫次克、烏蘭巴圖 ">東北亞
<OPTION
value="+0800 吉隆坡、新加坡 ">馬來半島
<OPTION
value="+0800 伯斯 ">澳洲西部
<OPTION
value="+0900 大阪、北海道、東京 ">東京
<OPTION
value="+0900*亞庫茲克 ">亞庫茲克
<OPTION
value="+0900 漢城 ">韓國
<OPTION
value="+0930*愛德蘭 ">澳洲中部
<OPTION
value="+0930 達爾文 ">澳洲中部
<OPTION
value="+1000 布里斯本 ">澳洲東部
<OPTION
value="+1000*坎培拉、墨爾本、雪梨 ">澳洲東部
<OPTION
value="+1000*海參威 ">海參威
<OPTION
value="+1000*霍巴特 ">塔斯梅尼亞
<OPTION
value="+1000 關島、莫斯比港 ">西太平洋
<OPTION
value="+1100 馬哥大、所羅門群島、新卡倫多尼亞 ">太平洋中部
<OPTION
value="+1200 斐濟、肯加塔、馬歇爾群島 ">斐濟
<OPTION
value="+1200*奧克蘭、威靈頓 ">紐西蘭
<OPTION
value="+1300 努瓜婁發 ">東加</OPTION>
</SELECT>
</FONT></P></TD>
<TD align=middle valign="top">
<DIV style="Z-INDEX: -1; POSITION: absolute; TOP: 30px;"><FONT id=YMBG
style="FONT-SIZE: 100pt; COLOR: #f0f0f0; FONT-FAMILY: 'Arial Black'"> 0000<BR>
JUN</FONT>
</DIV>
<TABLE border=0>
<TBODY>
<TR bgcolor="#990000">
<TD colSpan=7><FONT style="FONT-SIZE: 9pt"
color=#ffffff size=2>公曆
<SELECT style="FONT-SIZE: 9pt"
onchange=changeCld() name=SY>
<SCRIPT language=JavaScript><!--
for(i=1900;i<2051;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT>
年
<SELECT style="FONT-SIZE: 9pt" onchange=changeCld()
name=SM>
<SCRIPT language=JavaScript><!--
for(i=1;i<13;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT>
月 </FONT> <FONT id=GZ face=新細明體 color=#ffffff
size=3> </FONT><BR> </TD>
</TR>
<TR align=middle bgColor=#e0e0e0>
<TD width=54><font color="#9900FF"><strong>日</strong></font></TD>
<TD width=54><font color="#9900FF"><strong>一</strong></font></TD>
<TD width=54><font color="#9900FF"><strong>二</strong></font></TD>
<TD width=50><font color="#9900FF"><strong>三</strong></font></TD>
<TD width=54><font color="#9900FF"><strong>四</strong></font></TD>
<TD width=54><font color="#9900FF"><strong>五</strong></font></TD>
<TD width=54><font color="#9900FF"><strong>六</strong></font></TD>
</TR>
<SCRIPT language=JavaScript><!--
var gNum
for(i=0;i<6;i++) {
document.write('<tr align=center>')
for(j=0;j<7;j++) {
gNum = i*7+j
document.write('<td id="GD' + gNum +'" onMouseOver="mOvr(' + gNum +')" onMouseOut="mOut()"><font id="SD' + gNum +'" size=5 face="Arial Black"')
if(j == 0) document.write(' color=red')
if(j == 6)
if(i%2==1) document.write(' color=red')
else document.write(' color=green')
document.write(' TITLE=""> </font><br><font id="LD' + gNum + '" size=2 style="font-size:9pt"> </font></td>')
}
document.write('</tr>')
}
//--></SCRIPT>
</TBODY>
</TABLE></TD>
<TD vAlign=top align=middle width=40><BUTTON
style="FONT-SIZE: 9pt;height:20px;width:60px;background:#990000; color: #FFffff;" onclick="pushBtm('YU')">上一年▲</BUTTON><BR><BUTTON
style="FONT-SIZE: 9pt;height:20px;width:60px;background:#990000; color: #FFffff;" onclick="pushBtm('YD')">下一年▼</BUTTON>
<P><BUTTON style="FONT-SIZE: 9pt;height:20px;width:60px;background:#990000; color: #FFffff;"
onclick="pushBtm('MU')">上一月▲</BUTTON><BUTTON style="FONT-SIZE: 9pt;height:20px;width:60px;background:#990000; color: #FFffff ;" onclick="pushBtm('')">當前月■</BUTTON>
<BUTTON style="FONT-SIZE: 9pt;height:20px;width:60px;background:#990000; color: #FFffff ;" onclick="pushBtm('MD')">下一月▼</BUTTON>
</TD></TR></TBODY></TABLE></FORM></CENTER></BODY></HTML>
[Ctrl+A 全选 Ctrl+C 复制,如不能正常显示请刷新一下] |
|
控制浏览器运动的几个按钮
|
作者: AppleBBS
以下是代码: <html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#000000" text="#999999" link="#33FF33" vlink="#33FF33" alink="#33FF33">
<script>
var xx
var v=1
function ml() {
clearTimeout(xx)
window.moveBy(-v, 0);
xx = setTimeout("ml()",140)
}
function mr() {
clearTimeout(xx)
window.moveBy(v, 0);
xx = setTimeout("mr()",140)
}
function mu() {
clearTimeout(xx)
window.moveBy(0, -v);
xx = setTimeout("mu()",140)
}
function md() {
clearTimeout(xx)
window.moveBy(0, v);
xx = setTimeout("md()",140)
}
function ws(){
clearTimeout(xx)
}
function adj(i){
if (i==1){v+=1; if (v>5)v-=1}
else {v-=1
if (v==0)v=1}
}
</script>
<DIV align=center>
<FORM>
<INPUT onclick=mu(v,0); type=button value=向上>
<INPUT onclick=ml(v,0); type=button value=向左>
<INPUT onclick=mr(0,v); type=button value=向右>
<INPUT onclick=md(0,v); type=button value=向下>
<INPUT onclick=ws(); type=button value=停止>
<BR><BR><BR>
<INPUT onclick=adj(1); type=button value=加速>
<INPUT onclick=adj(0); type=button value=减速>
<BR></FORM></DIV>
</body>
</html>
[Ctrl+A 全选 Ctrl+C 复制,如不能正常显示请刷新一下] |
|
javascript 常用类
|
作者: zlc810821
一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形如 (2003-12-05) 2.3 长时间,形如 (2003-12-05 13:04:06) 2.4 只有年和月。形如(2003-05,或者2003-5) 2.5 只有小时和分钟,形如(12:03) 3、表单类 3.1 所有的表单的值都不能为空 3.2 多行文本框的值不能为空。 3.3 多行文本框的值不能超过sMaxStrleng 3.4 多行文本框的值不能少于sMixStrleng 3.5 判断单选框是否选择。 3.6 判断复选框是否选择. 3.7 复选框的全选,多选,全不选,反选 3.8 文件上传过程中判断文件类型 4、字符类 4.1 判断字符全部由a-Z或者是A-Z的字字母组成 4.2 判断字符由字母和数字组成。 4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 4.4 字符串替换函数.Replace(); 5、浏览器类 5.1 判断浏览器的类型 5.2 判断ie的版本 5.3 判断客户端的分辨率 6、结合类 6.1 email的判断。 6.2 手机号码的验证 6.3 身份证的验证
二、功能类
1、时间与相关控件类 1.1 日历 1.2 时间控件 1.3 万年历 1.4 显示动态显示时钟效果(文本,如OA中时间) 1.5 显示动态显示时钟效果 (图像,像手表) 2、表单类 2.1 自动生成表单 2.2 动态添加,修改,删除下拉框中的元素 2.3 可以输入内容的下拉框 2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发送) 3、打印类 3.1 打印控件 4、事件类 4.1 屏蔽右键 4.2 屏蔽所有功能键 4.3 --> 和<-- F5 F11,F9,F1 4.4 屏蔽组合键ctrl+N 5、网页设计类 5.1 连续滚动的文字,图片(注意是连续的,两段文字和图片中没有空白出现) 5.2 html编辑控件类 5.3 颜色选取框控件 5.4 下拉菜单 5.5 两层或多层次的下拉菜单 5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏目) 5.7 状态栏,title栏的动态效果(例子很多,可以研究一下) 5.8 双击后,网页自动滚屏 6、树型结构。 6.1 asp+SQL版 6.2 asp+xml+sql版 6.3 java+sql或者java+sql+xml 7、无边框效果的制作 8、连动下拉框技术 9、文本排序 10,画图类,含饼、柱、矢量贝滋曲线 11,操纵客户端注册表类 12,DIV层相关(拖拽、显示、隐藏、移动、增加) 13,TABLAE相关(客户端动态增加行列,模拟进度条,滚动列表等) 14,各种<object classid=>相关类,如播放器,flash与脚本互动等 16, 刷新/模拟无刷新 异步调用类(XMLHttp或iframe,frame)
一、验证类 1、数字验证内 1.1 整数 /^(-|\+)?\d+$/.test(str) 1.2 大于0的整数 (用于传来的ID的验证) /^\d+$/.test(str) 1.3 负整数的验证 /^-\d+$/.test(str) 2、时间类 2.1 短时间,形如 (13:04:06) function isTime(str) { var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); if (a == null) {alert('输入的参数不是时间格式'); return false;} if (a[1]>24 || a[3]>60 || a[4]>60) { alert("时间格式不对"); return false } return true; } 2.2 短日期,形如 (2003-12-05) function strDateTime(str) { var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if(r==null)return false; var d= new Date(r[1], r[3]-1, r[4]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); } 2.3 长时间,形如 (2003-12-05 13:04:06) function strDateTime(str) { var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); 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]); } 2.4 只有年和月。形如(2003-05,或者2003-5) 2.5 只有小时和分钟,形如(12:03) 3、表单类 3.1 所有的表单的值都不能为空 <input onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')alert('不能为空!')"> 3.2 多行文本框的值不能为空。 3.3 多行文本框的值不能超过sMaxStrleng 3.4 多行文本框的值不能少于sMixStrleng 3.5 判断单选框是否选择。 3.6 判断复选框是否选择. 3.7 复选框的全选,多选,全不选,反选 3.8 文件上传过程中判断文件类型 4、字符类 4.1 判断字符全部由a-Z或者是A-Z的字字母组成 <input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')"> 4.2 判断字符由字母和数字组成。 <input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')"> 4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 /^([a-zA-z_]{1})([\w]*)$/g.test(str) 4.4 字符串替换函数.Replace(); 5、浏览器类 5.1 判断浏览器的类型 window.navigator.appName 5.2 判断ie的版本 window.navigator.appVersion 5.3 判断客户端的分辨率 window.screen.height; window.screen.width; 6、结合类 6.1 email的判断。 function ismail(mail) { return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail)); } 6.2 手机号码的验证 6.3 身份证的验证 function isIdCardNo(num) { if (isNaN(num)) {alert("输入的不是数字!"); return false;} var len = num.length, re; if (len == 15) re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/); else if (len == 18) re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/); else {alert("输入的数字位数不对!"); return false;} var a = num.match(re); if (a != null) { if (len==15) { var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; } else { var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; } if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"); return false;} } return true; }
画图: <OBJECT id=S style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px" height=240 width=392 classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6"> </OBJECT> <SCRIPT> S.DrawingSurface.ArcDegrees(0,0,0,30,50,60); S.DrawingSurface.ArcRadians(30,0,0,30,50,60); S.DrawingSurface.Line(10,10,100,100); </SCRIPT> 写注册表: <SCRIPT> var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\", 1, "REG_BINARY"); WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader", "Goocher!", "REG_SZ"); var bKey = WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\"); WScript.Echo (WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader")); WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader"); WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\"); WshShell.RegDelete ("HKCU\\Software\\ACME\\"); </SCRIPT>
TABLAE相关(客户端动态增加行列) <HTML> <SCRIPT LANGUAGE="JScript"> function numberCells() { var count=0; for (i=0; i < document.all.mytable.rows.length; i++) { for (j=0; j < document.all.mytable.rows(i).cells.length; j++) { document.all.mytable.rows(i).cells(j).innerText = count; count++; } } } </SCRIPT> <BODY onload="numberCells()"> <TABLE id=mytable border=1> <TR><TH> </TH><TH> </TH><TH> </TH><TH> </TH></TR> <TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR> <TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR> </TABLE> </BODY> </HTML>
1.身份证严格验证:
<script> 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:"国外"} function cidInfo(sId){ var iSum=0 var info="" 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 "Error:非法地区"; 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 "Error:非法生日"; for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) if(iSum%11!=1)return "Error:非法证号"; return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") }
document.write(cidInfo("380524198002300016"),"<br/>"); document.write(cidInfo("340524198002300019"),"<br/>") document.write(cidInfo("340524197711111111"),"<br/>") document.write(cidInfo("34052419800101001x"),"<br/>"); </script>
2.验证IP地址 <SCRIPT LANGUAGE="JavaScript"> function isip(s){ var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}}; var re=s.split(".") return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false }
var s="202.197.78.129"; alert(isip(s)) </SCRIPT>
3.加sp1后还能用的无边框窗口!! <HTML XMLNS:IE> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <IE:Download ID="include" STYLE="behavior:url(#default#download)" /> <title>Chromeless Window</title>
<SCRIPT LANGUAGE="JScript"> /*--- Special Thanks For andot ---*/
/* This following code are designed and writen by Windy_sk <seasonx@163.net> You can use it freely, but u must held all the copyright items! */
/*--- Thanks For andot Again ---*/
var CW_width = 400; var CW_height = 300; var CW_top = 100; var CW_left = 100; var CW_url = "/"; var New_CW = window.createPopup(); var CW_Body = New_CW.document.body; var content = ""; var CSStext = "margin:1px;color:black; border:2px outset;border-style:expression(onmouseout=onmouseup=function(){this.style.borderStyle='outset'}, onmousedown=function(){if(event.button!=2)this.style.borderStyle='inset'});background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";
//Build Window include.startDownload(CW_url, function(source){content=source});
function insert_content(){ var temp = ""; CW_Body.style.overflow = "hidden"; CW_Body.style.backgroundColor = "white"; CW_Body.style.border = "solid black 1px"; content = content.replace(/<a ([^>]*)>/g,"<a onclick='parent.open(this.href);return false' $1>"); temp += "<table width=100% height=100% cellpadding=0 cellspacing=0 border=0>"; temp += "<tr style=';font-size:12px;background:#0099CC;height:20;cursor:default' ondblclick=\"Max.innerText=Max.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" onmouseup='parent.drag_up(event)' onmousemove='parent.drag_move(event)' onmousedown='parent.drag_down(event)' onselectstart='return false' oncontextmenu='return false'>"; temp += "<td style='color:#ffffff;padding-left:5px'>Chromeless Window For IE6 SP1</td>"; temp += "<td style='color:#ffffff;padding-right:5px;' align=right>"; temp += "<span id=Help onclick=\"alert('Chromeless Window For IE6 SP1 - Ver 1.0\\n\\nCode By Windy_sk\\n\\nSpecial Thanks For andot')\" style=\""+CSStext+"font-family:System;padding-right:2px;\">?</span>"; temp += "<span id=Min onclick='parent.New_CW.hide();parent.blur()' style=\""+CSStext+"font-family:Webdings;\" title='Minimum'>0</span>"; temp += "<span id=Max onclick=\"this.innerText=this.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();\" style=\""+CSStext+"font-family:Webdings;\" title='Maximum'>1</span>"; temp += "<span id=Close onclick='parent.opener=null;parent.close()' style=\""+CSStext+"font-family:System;padding-right:2px;\" title='Close'>x</span>"; temp += "</td></tr><tr><td colspan=2>"; temp += "<div id=include style='overflow:scroll;overflow-x:hidden;overflow-y:auto; HEIGHT: 100%; width:"+CW_width+"'>"; temp += content; temp += "</div>"; temp += "</td></tr></table>"; CW_Body.innerHTML = temp; }
setTimeout("insert_content()",1000);
var if_max = true; function show_CW(){ window.moveTo(10000, 10000); if(if_max){ New_CW.show(CW_top, CW_left, CW_width, CW_height); if(typeof(New_CW.document.all.include)!="undefined"){ New_CW.document.all.include.style.width = CW_width; New_CW.document.all.Max.innerText = "1"; } }else{ New_CW.show(0, 0, screen.width, screen.height); New_CW.document.all.include.style.width = screen.width; } }
window.onfocus = show_CW; window.onresize = show_CW;
// Move Window var drag_x,drag_y,draging=false
function drag_move(e){ if (draging){ New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height); return false; } }
function drag_down(e){ if(e.button==2)return; if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return; drag_x=e.clientX; drag_y=e.clientY; draging=true; e.srcElement.setCapture(); }
function drag_up(e){ draging=false; e.srcElement.releaseCapture(); if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return; CW_top = e.screenX-drag_x; CW_left = e.screenY-drag_y; }
</SCRIPT> </HTML>
|
|
图片马赛克的另一个变化Pix slideshow
|
点击可进入相应的地址! 制作方法: 将下面的代码复制到<head>后: <script language="JavaScript1.1"> <!-- //指定轮显的间隔时间 (in mili seconds) var slidespeed=2000 //指定图片路径 var slideimages=new Array("photo1.jpg","photo2.jpg","photo3.jpg") //指定图片的超链接 var slidelinks=new Array("http://www.dynamicdrive.com","http://wsabstract.com","http://www.geocities.com")
var imageholder=new Array() var ie55=window.createPopup for (i=0;i<slideimages.length;i++){ imageholder[i]=new Image() imageholder[i].src=slideimages[i] }
function gotoshow(){ window.location=slidelinks[whichlink] } //--> </script> 注意代码中的描述文字,用户可相应改动代码! 在页面<body>的相应位置,加入代码: <a href="javascript:gotoshow()"><img src="photo1.jpg" name="slide" border=0 style="filter:progid:DXImageTransform.Microsoft.Pixelate(MaxSquare=15,Duration=1)"></a> 并加入Script代码: <script language="JavaScript1.1"> <!-- var whichlink=0 var whichimage=0 var pixeldelay=(ie55)? document.images.slide.filters[0].duration*1000 : 0 function slideit(){ if (!document.images) return if (ie55) document.images.slide.filters[0].apply() document.images.slide.src=imageholder[whichimage].src if (ie55) document.images.slide.filters[0].play() whichlink=whichimage whichimage=(whichimage<slideimages.length-1)? whichimage+1 : 0 setTimeout("slideit()",slidespeed+pixeldelay) } slideit() //--> </script>
|
|
用JAVASCRIPT来进行页面各表单之间的数据传递的问题
|
一,最简单的就是同一个网页里的表单的数据传递。
举个实例,一个网页上有两个表单,每个表单里一个文本框,一个按钮。点按钮互相对操作对方的文本框的值。我们举的例子是把一个文本框付给另一个文本框。具体的HTML代码如下:
<html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <form name="form1" method="post" action=""> <input type="text" name="textfield"> <input type="button" name="Submit" value="1--------->2" onClick="ok()"> </form> <form name="form2" method="post" action=""> <input type="text" name="textfield2"> <input type="button" name="Submit" value="2----->1" onClick="ok1()"> </form> </body> </html>以上为HTMl的代码,大家可能注意到了onclik的代码了,有两个函数,接下来就是JAVASCRIPT的代码了:
<script language="JavaScript"> function ok() { document.form2.textfield2.value=document.form1.textfield.value; } function ok1() { document.form1.textfield.value=document.form2.textfield2.value; } </script>
二,第二种是两个窗口之间的表单的文本框之间数据传递。
其实这个可以在原来的基础上进行一些扩展就可以了。关于如何创建弹出窗口,窗体里的表单的代码, 在这里就不多说了,现在在这里说一下如何操作父窗口的表单里的文本框的数据。具体代码如下:
<script language="JavaScript"> function ok() { opener.document.form2.textfield2.value=document.form1.textfield.value } </script>
三,第三种就是框架网页之间的表单的文本框之间数据传递.
注意的地方是框架的写法:
<frameset cols="505,505"> <frame src="test.htm" name="leftr" id="leftr">//定义框架的名称 <frame src="test2.htm" id="right" name="right"> </frameset> <noframes> <body> </body> </noframes>体的实现代码如下:
<script language="JavaScript"> function ok() { parent.leftr.document.form2.textfield2.value=document.form1.textfield.value } </script> 这三种窗口之间的文本框数值互相操作的简单方法就实现了,其它需要注意的就是他们之间的关系。
在设计网站的时,我们可能会想把链接做成按钮的样子,按钮做成链接的样子。下面说一下我的方法。 1、按钮做成链接(图片)的样子 提交按钮<input type="submit" value="提交"> 提交链接<a href="#" onclick="表单名字.submit()">提交</a>
重置按钮<input type="reset" value="重置"> 重置链接<a href="#" onclick="表单名字.reset()">重置</a>
普通按钮<input type="button" value="按钮" onclick="函数()"> 普通链接<a href="#" onclick="函数()">链接</a>
至于图片也一样把a标签换成img
2、链接做成按钮的样子 <a href="reg.asp">注册</a> =><input type="button" value="注册" onclick="location.href='reg.asp'">
----------------------------------- 有的时候我们完全可以手工做一个get方式的表单,至于用按钮还是链接随心所欲。 <form action="xx.asp" method="get" name="form1"> <input name="aa" type="text" id="aa"> <input name="bb" type="text" id="bb"> <input type="submit" name="Submit" value="提交"> </form> => <input name="aa" type="text" id="aa"> <input name="bb" type="text" id="bb"> <input type="button" value="按钮" onclick="location.href='xx.asp?aa='+document.all['aa'].value+'&bb='+document.all['bb'].value"> ----------------------------------- 进一步说我们还可以做一个按钮(链接)来同时传递js变量,表单input的值,asp变量,Recordset值 <script language="javascript"> var id1=1; </script> <% id3=3 .... rs.open exec,conn,1,1 假设有rs("id4")=4 ... %> <input name="id2" type="text" id="id2" value="2"> <input type="button" value="按钮" onclick="location.href='xx.asp?id1='+id1+'&id2='+document.all['id2'].value+'&id3=<%=id3%>&id4=<%=rs("id4")%>'"> 我们按下按钮会看到浏览器的url是xx.asp?id1=1&id2=2&id3=3&id4=4 在xx.asp中我们就可以用request.querystring来得到所有变量,这样是不是变相的客户端js和服务器段的变量传递? |
|
可以得到图片尺寸大小,并且限制格式的程序
|
以下是代码: <table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="100%" height="30">
<script>
function gigi(hh)
{
var kk
urll=hh.ftpname.value
if (urll==""){alert("请从你的硬盘中选取你的头像文件...");return false;}
kk=urll.substring(urll.length-4,urll.length)
kk=kk.toLowerCase();
if (kk!=".jpg"){
if (kk!=".gif"){
if (kk!=".bmp"){
if (kk!=".swf"){
alert("对不起,只能上传JPG,GIF,BMP,swf格式的文件")
return false;
}
}
}
}
ss=1
while (ss<=15)
{
ss++
}
alert("图象的尺寸:\n宽度"+tp1.width+"\n高度"+tp1.height)
return false;
}
function lll()
{
urll2=for3.ftpname.value
re=/\\/g
urll2=urll2.replace(re,’/’);
tp1.src="file://"+urll2
}
</script>
<form method="POST" action="" enctype="multipart/form-data" onsubmit="return gigi(this);" name="for3">
<input type="file" name="ftpname" size="23"> <input type="submit" value="上 传" name="B1" onmouseover="lll();this.focus();">
</td></form>
</tr>
</table>
<img border="0" src="" name="tp1"> [Ctrl+A 全选 Ctrl+C 复制,如不能正常显示请刷新一下] |
|
网页加载时的Loading(七种)
|
方法一:
<HTML> <BODY> <P> </P><P> </P><P> </P><P> </P><P> </P> <table border="0" cellpadding="0" cellspacing="0" width="50%" align=center> <tr> <td width="51%" noWrap> <p align="right"><FONT face=宋体 color=navy size=2>正在加载:</FONT></p> </td> <td width="4%" bordercolor="#000000"> <marquee align="middle" direction="right" scrolldelay="1" bgcolor="gainsboro" scrollamount="2" style="BORDER-RIGHT: black 1px outset; BORDER-TOP: black 1px outset; FONT-SIZE: xx-small; BORDER-LEFT: black 1px outset; WIDTH: 133px; COLOR: #000080; BORDER-BOTTOM: black 1px outset; HEIGHT: 13px" behavior="slide">███████████████████████████████████████████████████████████████████████████████</marquee> </td><td width="45%" align=left><div id=per></div></td></tr></table> <SCRIPT> var myTime=0 function counter(){ myTime++ per.innerHTML="<font size=2 color=darkblue> "+myTime+"%</font>" if(myTime<100) setTimeout("counter()",40); else{ location.href="http://download.pchome.net" }} counter() </SCRIPT> </BODY> </HTML>
<HTML> <BODY> <P> </P><P> </P><P> </P><P> </P><P> </P> <table border="0" cellpadding="0" cellspacing="0" width="50%" align=center> <tr> <td width="51%" noWrap> <p align="right"><FONT face=宋体 color=navy size=2>正在加载:</FONT></p> </td> <td width="4%" bordercolor="#000000"> <marquee align="middle" direction="right" scrolldelay="1" bgcolor="gainsboro" scrollamount="2" style="BORDER-RIGHT: black 1px outset; BORDER-TOP: black 1px outset; FONT-SIZE: xx-small; BORDER-LEFT: black 1px outset; WIDTH: 133px; COLOR: #000080; BORDER-BOTTOM: black 1px outset; HEIGHT: 13px" behavior="slide">███████████████████████████████████████████████████████████████████████████████</marquee> </td><td width="45%" align=left><div id=per></div></td></tr></table> <SCRIPT> var myTime=0 function counter(){ myTime++ per.innerHTML="<font size=2 color=darkblue> "+myTime+"%</font>" if(myTime<100) setTimeout("counter()",40); else{ location.href="http://download.pchome.net" }} counter() </SCRIPT> </BODY> </HTML> 方法二:
<html> <head> <title>欢迎光临网易多广告站</title> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <SCRIPT type=text/javascript> <!-- var ie5 = (document.all && document.getElementsByTagName); var step = 0; function setSB(v, el, inforEl, message) { if (ie5 || document.readyState == "complete") { filterEl = el.children[0]; valueEl = el.children[1]; if (filterEl.style.pixelWidth > 0) { var filterBackup = filterEl.style.filter; filterEl.style.filter = ""; filterEl.style.filter = filterBackup; } filterEl.style.width = v + "%"; valueEl.innerText = v + "%"; inforEl.innerText = message; } } function setSBByStep(v, el, inforEl, message) { if (ie5 || document.readyState == "complete") { step = step + v; filterEl = el.children[0]; valueEl = el.children[1]; if (filterEl.style.pixelWidth > 0) { var filterBackup = filterEl.style.filter; filterEl.style.filter = ""; filterEl.style.filter = filterBackup; } filterEl.style.width = step + "%"; valueEl.innerText = step + "%" inforEl.innerText = message; } } function fakeProgress(v, el) { if (v >= 101) location.href="http://www.163.com"; else { setSB(v, el, infor, "Loading... please wait"); window.setTimeout("fakeProgress(" + (v + 1) + ", document.all['" + el.id + "'])", 60); } } //--> </SCRIPT> </head> <BODY onload="fakeProgress(0,sb)" topmargin=100 bgcolor="#999999"> <br><br><br><br><br><br><br><br> <!-- Status Bar Starts --> <div align=center> <DIV id=sb style="BORDER-RIGHT: white 0px inset; BORDER-TOP: white 0px inset; BACKGROUND: #cccccc; BORDER-LEFT: white 0px inset; WIDTH: 200px; BORDER-BOTTOM: white 0px inset; HEIGHT: 20px; TEXT-ALIGN: left"> <DIV id=sbChild1 style="FILTER: Alpha(Opacity=0, FinishOpacity=80, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=0); WIDTH: 0%; POSITION: absolute; HEIGHT: 20px"> <DIV style="FONT-SIZE: 1px;BACKGROUND:#ffffff; WIDTH: 100%; HEIGHT: 100%"></DIV></DIV> <DIV style="FONT-SIZE:11px; WIDTH: 100%; COLOR:#000000; FONT-FAMILY:verdana; POSITION: absolute; TEXT-ALIGN: center"></DIV></DIV> <!-- Status Bar Ends --> <br> <DIV id=infor style=" FONT-SIZE:11px; WIDTH: 100%; COLOR:#000000; FONT-FAMILY:verdana; POSITION: relative; TEXT-ALIGN: center"> </DIV> </div> </BODY> </html> 方法三:
<html> <head> <style type="text/css"> td { font-size: 12px} </style> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <SCRIPT type=text/javascript> var ie5=(document.all && document.getElementsByTagName); var step=0; function setSB(v, el, inforEl, message) { if (ie5 || document.readyState == "weicool") { filterEl=el.children[0]; valueEl=el.children[1]; if (filterEl.style.pixelWidth > 0) { var filterBackup=filterEl.style.filter; filterEl.style.filter=""; filterEl.style.filter=filterBackup;} filterEl.style.width=v + "%"; valueEl.innerText=v + "%"; inforEl.innerText=message;}} function setSBByStep(v, el, inforEl, message) { if (ie5 || document.readyState == "weicool") { step=step + v; filterEl=el.children[0]; valueEl=el.children[1]; if (filterEl.style.pixelWidth > 0) { var filterBackup=filterEl.style.filter; filterEl.style.filter=""; filterEl.style.filter=filterBackup;} filterEl.style.width=step + "%"; valueEl.innerText=step + "%" inforEl.innerText=message;}} function fakeProgress(v, el) { if (v >= 101) location.href="http://www.333v.com"; else { setSB(v, el, infor, " 网页加载中 ......"); window.setTimeout("fakeProgress(" + (v + 1) + ", document.all['" + el.id + "'])", 20)}} </SCRIPT> </head> <BODY onload="fakeProgress(0,sb)" topmargin=100 bgcolor="#4678B0" link="#FF0000" vlink="#FF0000"> <p align="center"> <font size="6" color="#FFFFFF"><b>伟COOL网络</b></font> <p align="center"> <!-- Status Bar Starts --> <div align=center> <DIV id=sb style="BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #c0c0c0 1px solid; BACKGROUND: #4678B0; BORDER-LEFT: #fffffff 1px solid; WIDTH: 400px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 14px; TEXT-ALIGN:left"> <DIV id=sbChild1 style="FIlTER: Alpha(Opacity=0, FinishOpacity=80, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=0); WIDTH: 100%; POSITION: absolute; height:12px; overflow: hidden"> <DIV style="BACKGROUND:#000000; WIDTH: 100%";height:12px; overflow: hidden></DIV></DIV> <DIV style="font-size: 10px; width: 403; color: white; font-family: arial; position: absolute; text-align: center; height: 14; left: 11; top: 210"> </DIV> </DIV><!-- Status Bar Starts --> <DIV id=infor style="font-size: 11px; width: 402; color: #999999; font-family: arial; position: relative; text-align: center; height: 19"> </DIV> </div> <p align="center"> </p> <p align="center"> </p> <p align="right"> </p> <p align="right"><font color="#FF0000"><a href="http://www.333v.com"><b>进入主页>>></b></a></font></p> </BODY> </html> 方法四:
<body style="background:black"> <div style="position:absolute;width:322;height:14;border:1 #707888 solid;overflow:hidden"> <div style="position:absolute;top:-1;left:0" id="pimg"> </div> </div> <div style="position:absolute;top:30;left:120;font-size:9pt;color:#f4f4f4" id="abc"> Loading............. </div> <script> s=new Array(); s[0]="#050626"; s[1]="#0a0b44"; s[2]="#0f1165"; s[3]="#1a1d95"; s[4]="#1c1fa7"; s[5]="#1c20c8"; s[6]="#060cff"; s[7]="#2963f8"; function ls(){ pimg.innerHTML=""; for(i=0;i<9;i++){ pimg.innerHTML+="<input style=\"width:15;height:10;border:0;background:"+s[i]+";margin:1\">"; } } function rs(){ pimg.innerHTML=""; for(i=9;i>-1;i--){ pimg.innerHTML+="<input style=\"width:15;height:10;border:0;background:"+s[i]+";margin:1\">"; } } ls(); var g=0;sped=0; function str(){ if(pimg.style.pixelLeft<350&&g==0){ if(sped==0){ ls(); sped=1; } pimg.style.pixelLeft+=4; setTimeout("str()",1); return; } g=1; if(pimg.style.pixelLeft>-200&&g==1){ if(sped==1){ rs(); sped=0; } pimg.style.pixelLeft-=4; setTimeout("str()",1); return; } g=0; str(); } function flashs(){ if(abc.style.color=="#ffffff"){ abc.style.color="#707888"; setTimeout('flashs()',500); } else{ abc.style.color="#ffffff"; setTimeout('flashs()',500); } } flashs(); str(); </script> 方法五:
<SCRIPT>cnease=window.open("","etangWHSAD","top=2000");cnease.close(); focus() self.resizeTo(800,600) self.moveTo(-3,-3)</SCRIPT> <html> <head> <title>一千经典特效</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"> td,form,select,input,textarea,body {font-family: 宋体;font-color:#000000;font-size: 12px;line-height:150%;letter-spacing:2px} a:link { font-size: 9pt; text-decoration: none; color: #666666} a:visited { font-size:9pt; text-decoration: none; color: #666666} a:hover { text-decoration: none; font-size: 9pt; color: #666666} a:active { font-size: 9px; text-decoration: none; color: #666666} </style> <script> var url='../4/11.htm'; </script> </head> <body onLoad="location.href=url;" style='overflow:hidden;overflow-y:hidden'> <div align=center> <table height=70% valign=middle align=center> <tr> <td align="center" disabled> <!-- Displaytext--> <div align="center">一千经典特效</div> <p></p> <font class=fontbig>页面读取中,请等待......<br> </font> <p></p><p></p> <style><!--.proccess{border:1px solid;width:8;height:8;background:#ffffff;margin:3}--></style> <p></p><p></p> <div align="center"> <form method=post name=proccess> <script language=javascript> for(i=0;i<30;i++)document.write("<input class=proccess>") </script> </form> </div></td></tr></table> <div align="center"> <script language=javascript>var p=0,j=0; var c=new Array("lightskyblue","white") setInterval('proccess();',100) function proccess(){ document.forms.proccess.elements[p].style.background=c[j]; p+=1; if(p==30){p=0;j=1-j;}} --></script> </div> </div> <div align="center"> <script> <!-- if (document.layers) document.write('<Layer src="../3/' + url + ' " VISIBILITY="hide"> </Layer>'); else if (document.all || document.getElementById) document.write('<iframe src="../3/' + url + '" style="visibility: hidden;"></iframe>'); else location.href=url; //--> </script> </div> 方法六:
<html><head><title>网页欣赏</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta http-equiv="Page-Exit" content="revealTrans(Duration=3,Transition=12)"><style> body,td{font-size:12px;color:#FFFF00;text-align:center}</style> </head><body bgColor="#32A348" text="#000000" scroll=no leftmargin="0" topmargin="0"> <script>l=Array(6,7,8,9,'a','b','b','c','d','e','f') U="82.htm" //网址 Pic="../3/2/1000.jpg" //图片 Nx=5;Ny=35 t="<table height=95% cellspacing=0 cellpadding=0><tr><td><tr>" for(x=Nx;x<Nx+Ny;x++)t+="<td width=20 id=a_mo"+x+"> </td>" t+="</tr><tr><td width=20 id=a_mo"+(Nx-1)+"> </td><td colspan="+(Ny-2)+" rowspan="+(Nx)+">"+ "正在载入,请稍候.......<div align=left style=\"border:black 1px solid;width:401px\">"+ "<img src=../3/"+Pic+" height=22 id=chart width=0></div><div id=percent></div>"+ "<a href="+U+"><font color=#808080>进入</font></a></td><td width=20 id=a_mo"+(Nx+Ny)+"> </td></tr>" for(x=2;x<=Nx;x++)t+="<tr><td width=20 id=a_mo"+(Nx-x)+"> </td><td width=20 id=a_mo"+(Ny+Nx+x-1)+"> </td></tr>" t+="<tr>" for(x=Ny;x>0;x--)t+="<td width=20 id=a_mo"+(x+Nx*2+Ny-1)+"> </td>" document.write(t+"</tr></td></tr></table>") var N=Nx*2+Ny*2 function f1(y){for(i=0;i<N;i++){c=(i+y)%20;if(c>10)c=20-c document.all["a_mo"+(i)].bgColor="'#00"+l[c]+l[c]+"00'"}y++ setTimeout('f1('+y+')',50)}f1(1) a_mo=0 function count(){a_mo++ chart.width=4*a_mo percent.innerText=a_mo+"%" if(a_mo<100)setTimeout("count()",50) else window.location=U}count() document.write("<iframe width=98% height=1 src=../3/"+U+"></iframe>")</script></body></html> 方法七:
<SCRIPT>cnease=window.open("","etangWHSAD","top=2000");cnease.close(); focus() self.resizeTo(800,600) self.moveTo(-3,-3)</SCRIPT> <html> <head> <title>一千经典特效</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"> td,form,select,input,textarea,body {font-family: 宋体;font-color:#000000;font-size: 12px;line-height:150%;letter-spacing:2px} a:link { font-size: 9pt; text-decoration: none; color: #666666} a:visited { font-size:9pt; text-decoration: none; color: #666666} a:hover { text-decoration: none; font-size: 9pt; color: #666666} a:active { font-size: 9px; text-decoration: none; color: #666666} </style> <script> var url='../4/11.htm'; </script> </head> <body onLoad="location.href=url;" style='overflow:hidden;overflow-y:hidden'> <div align=center> <table height=70% valign=middle align=center> <tr> <td align="center" disabled> <!-- Displaytext--> <div align="center">一千经典特效</div> <p></p> <font class=fontbig>页面读取中,请等待......<br> </font> <p></p><p></p> <style><!--.proccess{border:1px solid;width:8;height:8;background:#ffffff;margin:3}--></style> <p></p><p></p> <div align="center"> <form method=post name=proccess> <script language=javascript> for(i=0;i<30;i++)document.write("<input class=proccess>") </script> </form> </div></td></tr></table> <div align="center"> <script language=javascript>var p=0,j=0; var c=new Array("lightskyblue","white") setInterval('proccess();',100) function proccess(){ document.forms.proccess.elements[p].style.background=c[j]; p+=1; if(p==30){p=0;j=1-j;}} --></script> </div> </div> <div align="center"> <script> <!-- if (document.layers) document.write('<Layer src="../3/' + url + ' " VISIBILITY="hide"> </Layer>'); else if (document.all || document.getElementById) document.write('<iframe src="../3/' + url + '" style="visibility: hidden;"></iframe>'); else location.href=url; //--> </script> </div> |
|
通过地址栏传递参数.通过url传递参数
|
<script language="javascript"> var goUrl="index.asp?schooltype=&area="; function getType(vl) {var stno,arno,tmpurl; stno=goUrl.indexOf("schooltype="); arno=goUrl.indexOf("area="); if (stno!=-1 && arno!=-1 & stno<arno) {tmpurl=goUrl.substr(0,stno+11); tmpurl=tmpurl+vl+goUrl.substr(arno-1); goUrl=tmpurl; } } function getArea(vl) {var arno,tmpurl; arno=goUrl.indexOf("area="); tmpurl=goUrl.substr(0,arno+5); goUrl=tmpurl+vl; } function goNext() {//最好判断用户是否已经选择,可以用gourl的长度来判断 window.location=goUrl; } </script>
<td width=23% valign=top ><input onCLICK='getType(1);' type=radio name=schooltype value='1'> 小学</td> <td valign=top ID=ID_177><br><input type=radio name=area onCLICK='getArea(177);' ID=IDC_177 value='177'>福州市</td> <td valign=top ID=ID_177><br><input type=radio name=area onCLICK='goNext();' ID=IDC_177 value='177'>下一步</td>
可以根据你的选择江参数加到url 中。可以用来替代form 的提交。 |
|
vbscript 与 javascript如何传递变量(包括服务器端与客户端)
|
1:vbscript与javascipt传变量(客户端) <HTML> <HEAD> <META name=VI60_defaultClientScript content=javascript> <SCRIPT LANGUAGE=vbscript> <!-- dim strTemp '首先,我们在这里用vbscript定义一个变量 strTemp=10 '紧接着,在这里给其负值。 --> </SCRIPT>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript> <!--
function document_onclick() { window.alert(strTemp); /**在这里,我们不经过定义就可以直接用刚才vbscript里的遍量了。**/ }
//--> </SCRIPT> <SCRIPT LANGUAGE=javascript FOR=document EVENT=onclick> <!-- document_onclick() /** 此时,你可以通过点击网页就可以看到vbscript中的变量已经传过来了。 **/ //--> </SCRIPT> </HEAD> <BODY>
说明:其实,如果你在vbscript中定义的变量。如果不是在函数里或是过程中的,他就都是全局变量。这个全局也就是从此刻到网页执行完毕。所以,在javascript中就可以拿来直接用了。但这里可要注意顺序。脚本执行过程是逐行解释执行的,如果你把vbscirpt中定义变量的部分放在javascript之后,可能就得不到正确结果了。道理就很清楚了。
2:javascript与vbscript传变量(客户端) 其实,这个就不用讲了,也可以的。但还是给个简单的例子吧。自己看看就明白了。 <HTML> <HEAD> <META name=VI60_defaultClientScript content=javascript> <script language=javascript> var strTemp=10; </script>
<script language=vbscript> msgbox(strTemp) </script>
</HEAD> <BODY>
3:服务器端与客户端传变量。 首先,我要说的是,服务器端与客户端脚本是可以传的。传什么先不要管。但是,服务器端与客户端传变量与上面讲的不太一样。或者不叫传变量。我们还是结合例子吧。 <%@ Language=VBScript %> <% dim strIp strIp=Request.ServerVariables("remote_addr") Response.Write "你的IP是:"&strIp %> <html> <body> <SCRIPT LANGUAGE=vbscript> <!-- msgbox(strIp) '请注意:这里是错的! --> </SCRIPT> </body> 执行完上面的句子,可能不会报错。但答案是错的。原因就是我说的,这里面是不可能吧变量传过来的。如果我们把流程搞清楚就不会犯这样的错误了。 首先,服务器端先解释<% %>直接的代码。如果有,就把他解释执行完毕,得到值后直接传化为html的形式扔给客户端。至于客户端脚本,服务器端会动也不动就扔过来。所以我们看上面的例子。客户端的脚本不被服务器端解释。而服务器端的脚本已经转化为固定的值了,所以,strIp里什么也没有。故得不到你想要的答案。 那如何才能将ip址传过来呢。这个就要稍微动一下脑子,其实不用动。呵呵。直接把msgbox(strIp)改成这样。msgbox("<%=strIp%>")就可以了。注意,要加上""号的,因为这时,strIp已经被解释执行为字符串了。看到这里,相信大家都明白了,服务器端与客户端严格上,是不可能传递变量的。但可以变通的传值。(叫不叫传值,不用管他,反正已经得到正确答案了。呵呵)至于可不可以与客户端的javascript传值。我不说你也明白了。当然可以。
二:说在最后的话,脚本语言中vbscript与javascript功能上不分上下。说不上谁好谁差,可能vbscript中错误处理好一些。javascript中字符串处理好一些,但随着vbscript中正则表达式的引入,javascript中错误处理不断增强。所以,用那一种我认为都可以了。关键是看你的习惯与爱好,说这些的原因如果你用一种就可以完成,就最好不要用另一种。因为这样从速度和效率来说都是最佳的。因为浏览器不用同时调用。
|
|
vbscript和javascript互相调用方法
|
ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数。ASP开发环境提供了两种脚本引擎,即VBScript(缺省)和JScript。不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的ActiveX脚本引擎就能使用任何脚本语言。
脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最多特色支持的,也有可能是最具效率的。不同的环境和要求使得我们在选择脚本语言时注重不同的因素,同时也使得我们在某些时候面临选定的脚本语言不能直接提供其它语言固有的函数这一问题,或某个脚本已经写成但用的却是另外一种脚本语言。
此时应该怎么办?是否需要用当前所用的脚本语言重写这些脚本?或者说,是否有可能在一种脚本语言中调用其它脚本语言的内置函数?本文要说明的就是在ASP应用中如何让VBScript脚本和JScript脚本交互以最大限度地获得两种脚本语言的特色支持。
一、VBScript和JScript的内置函数
在VBScript和JScript中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置的函数并非总是在另外一种脚本语言中也有对应的函数。例如,VBScript提供了许多用于操作字符串和格式化数据的函数,这些函数在JScript中并不存在。这些函数包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供的用于管理数组、字符串编码等的函数在VBScript中也没有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。
那么,如果在JScript程序中需要一个VBscript函数该怎么办呢?
二、异种脚本的互相调用
如果需要在JScript脚本中调用一个VBScript中内置的函数,则应该写一个VBScript用户定义函数(在这里调用VBScript内置函数),然后在JScript脚本中象调用公用JScript函数一样调用这个用户定义函数。
例如,如果要调用的VBSCript内置函数是FormatCurrency(),则可以声明如下自定义函数:
<SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER"> Function Formatvalue(value) Formatvalue = FormatCurrency(value) End Function </SCRIPT>
接下来在JScript代码中就可以象普通JScript函数一样调用Formatvalue()了。用类似的方法也可以实现VBScript代码调用JScript函数。
应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript脚本内调用一个不带参数的VBScript过程(Sub)时应略加注意,此时在JScript中应该象调用一个不带参数的JScript函数一样调用它,如用foo()调用VBScript Sub foo过程。
三、数据共享
在某些情形下混合运用VBScript和JScript函数是非常有用的,但在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引用。
对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的语言所定义的。正如上例VBScript的过程调用,当从JScript中调用一个不带参数的VBScript对象的方法时,其调用方法也遵从JScript的调用规则,反之亦然。
四、数组管理
数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面的问题。
VBScript数组在JScript下可以用VBScript的符号引用,即用myArray(2)引用数组元素而不是JScript的数组元素引用符号myArray[2]。此外,还可以使用一个特殊的JScript对象——VBArray对象将VBScript数组转换为JScript数组。下面的代码从VBScript数组myVBArray创建JScript数组myJSArray:
var Temp = new VBArray(myVBArray) var myJSArray myJSArray = Temp.toArray()
上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()方法将自己转换为JScript数组。此后就可以象普通JScript数组一样使用myJSArray,如myJSArray[1]。但应当注意的是,toArray()方法将把一个多维的VBArray转换为一维的JScript数组。
从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们可以直接访问JScript数组相关的方法和属性,但没有直接访问JScript数组的单个元素的方法。也就是说,我们可以在VBScript脚本中读取JScript数组的长度属性,如下所示:
x = myJSArray.length
但无法直接读取该数组的单个元素,下面的VBScript代码是不正确的:
x = myJSArray(3)
解决该问题的一个可行的方法是执行一个转换过程,如下面的代码所示,此处假定VBScript是缺省的脚本语言:
<% Dim Temp Dim myVBArray Temp = myJSArray.join(", ") myVBArray = Split(Temp, ", ") %>
此处的JScript join()方法将数组myJSArray元素转换到一个以逗号为分割符的字符串,VBScript Split()函数将字符串转换为VBScript数组。注意这里我们是在VBScript环境下调用JScript的join方法。依照此例,我们可以通过自定义VBScript函数来模拟JScript的VBArray对象的toArray()方法以实现JScript数组到VBScript数组的转换。
五、小结
在同一个ASP工程内灵活选用不同脚本语言具有许多优点,这些脚本之间的交互能力更为开发者集成不同语言所提供的内置函数和其它功能带来了更多的机会,同时也使得实现既可用于VBScript也可用于JScript环境的通用脚本库成为可能。 |
|
鼠标经过时图片就会迅速的抖动
|
以下是代码: <style>
.shakeimage{
position:relative
}
</style>
<script language="javascript1.2">
var rector=3
var stopit=0
var a=1
function init(which){
stopit=0
shake=which
shake.style.left=0
shake.style.top=0
}
function rattleimage(){
if ((!document.all&&!document.getElementById)||stopit==1)
return
if (a==1){
shake.style.top=parseInt(shake.style.top)+rector
}
else if (a==2){
shake.style.left=parseInt(shake.style.left)+rector
}
else if (a==3){
shake.style.top=parseInt(shake.style.top)-rector
}
else{
shake.style.left=parseInt(shake.style.left)-rector
}
if (a<4)
a++
else
a=1
setTimeout("rattleimage()",50)
}
function stoprattle(which){
stopit=1
which.style.left=0
which.style.top=0
}
</script>
<body>
<center><img src=uploadfile/200512923158778.JPG class="shakeimage" onMouseover="init(this);rattleimage()" onMouseout="stoprattle(this)"></center>
</body> [Ctrl+A 全选 Ctrl+C 复制,如不能正常显示请刷新一下] |
|
不间断连续图片滚动效果的制作方法
|
先制作向上滚动的效果: 插入代码: <!-- 指向链接图片url --> <base href="http://www.it365cn.com"> <div id=demo style=overflow:hidden;height:150;width:90;background:#214984;color:#ffffff> <div id=demo1> <!-- 定义图片 --> <img src="images/logo_1.gif"> <img src="images/logo/flashempire.gif"> <img src="images/logo.gif"> <img src="images/logo/5dmedia.gif"> <img src="images/logo/macromedia.gif"> <img src="images/logo/sucaiw.gif"> <img src="images/logo/blueieda.gif"> <img src="images/logo/htmlcn.gif"> <img src="images/logo/fwcn.gif"> </div> <div id=demo2></div> </div>
<script> var speed=30 demo2.innerHTML=demo1.innerHTML function Marquee(){ if(demo2.offsetTop-demo.scrollTop<=0) demo.scrollTop-=demo1.offsetHeight else{ demo.scrollTop++ } } var MyMar=setInterval(Marquee,speed) demo.onmouseover=function() {clearInterval(MyMar)} demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)} </script>
制作向下滚动的效果: 将上面“制作向上滚动的效果”中的红色字体Js部分替换成: <script> var speed=30 demo2.innerHTML=demo1.innerHTML demo.scrollTop=demo.scrollHeight function Marquee(){ if(demo1.offsetTop-demo.scrollTop>=0) demo.scrollTop+=demo2.offsetHeight else{ demo.scrollTop-- } } var MyMar=setInterval(Marquee,speed) demo.onmouseover=function() {clearInterval(MyMar)} demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)} </script>
制作向左滚动的效果: <div id=demo style=overflow:hidden;height:33;width:500;background:#214984;color:#ffffff> <table align=left cellpadding=0 cellspace=0 border=0> <tr> <td id=demo1 valign=top><img src="images/logo_1.gif"><img src="images/logo/flashempire.gif"><img src="images/logo.gif"><img src="images/logo/5dmedia.gif"><img src="images/logo/macromedia.gif"><img src="images/logo/sucaiw.gif"><img src="images/logo/blueieda.gif"><img src="images/logo/htmlcn.gif"><img src="images/logo/fwcn.gif"> </td> <td id=demo2 valign=top></td> </tr> </table> </div>
<script> var speed=30 demo2.innerHTML=demo1.innerHTML function Marquee(){ if(demo2.offsetWidth-demo.scrollLeft<=0) demo.scrollLeft-=demo1.offsetWidth else{ demo.scrollLeft++ } } var MyMar=setInterval(Marquee,speed) demo.onmouseover=function() {clearInterval(MyMar)} demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)} </script>
制作向右滚动的效果: 将上面“制作向左滚动的效果”中的红色字体Js部分替换成: <script> var speed=30 demo2.innerHTML=demo1.innerHTML demo.scrollLeft=demo.scrollWidth function Marquee(){ if(demo.scrollLeft<=0) demo.scrollLeft+=demo2.offsetWidth else{ demo.scrollLeft-- } } var MyMar=setInterval(Marquee,speed) demo.onmouseover=function() {clearInterval(MyMar)} demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)} </script>
|
|
|