<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>kcruci的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=kcruci</link>
<description>kcruci的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[安装uPortal]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26354</link>
<author>kcruci</author>
<pubDate>2007/7/14 22:05:43</pubDate>
<description><![CDATA[安装uPortal_rel-2-5-1笔记<B>关键词</B>： <A href="http://tag.bokee.com/tag/uPortal_rel-2-5" target=_blank>uPortal_rel-2-5</A> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<P>
<P>2005年1月7日&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作者： 赖小年</P>
<P><BR>安装uPortal_rel-2-5-1过程中会碰到许多的一问题，希望把按装的心得和问题的解决方法，希望和大家一起分享</P>
<P>1.uPortal简介：</P>
<P>(JA-SIG)开发的uPortal基于的Java, XML, and XSL项目， 发行版包括WEB服务频道，权限，用户组管理等等。UPortal让你可以自己</P>
<P>增加你的机构需要的新特性。它着眼于高等教育机构，一些商业组织也用它来作为构建协同社区的框架。这种框架包括插入式的被成</P>
<P>为频道的组件，它提供用户感兴趣的信息。用户可以根据其在机构中角色选择关心的频道，同时还可以定制自己站点喜欢的样式。<BR>&nbsp; Sun Microsystems公司是高度评价开放源uPortal码的第一家平台供应商，认为uPortal码拥有Java开发的最佳实践和设计方案，能</P>
<P>够确保高等院校异种机环境中系统的优异性能。Sun此举进一步展示了它在为教育市场提供先进的、开放的和基于标准的解决方案方面</P>
<P>所做的努力。基于uPortal架构在教育市场具有很好的开拓潜力，Sun公司加强了它对JA-SIG的支持，以便促进高等教育机构间的协作</P>
<P>和优秀应用软件的共享。<BR>　　　　Sun还将与JA-SIG进一步合作，使uPortal下一版本满足JSR-168条款(JSR-168是Java技术规范第68款，它是业界的第一个门户</P>
<P>API标准)。这样，就能使uPortal基于门户程序的各种内容和应用集成在一起，并用于门户服务。通过关键的Java 标准的提供，Sun </P>
<P>ONE门户服务器和uPortal间将实现兼容。</P>
<P>2.下载<BR>上<A href="http://www.uportal.org/index.html">http://www.uportal.org/index.html</A>下载最新版本，你可以在Download页面中Release2.5.1的最新版本，他包含2.5.1 GA </P>
<P>QuickStart 和2.5.1 uPortal-only 两个版本，可以把两个版本都下载下来试试</P>
<P>3.安装QuickStart 版<BR>&nbsp;&nbsp;&nbsp; 把uPortal_rel-2-5-1-quick-start.zip包解压，确保你的电脑上装了jdk-1_5_0_05-windows-i586-p.exe(没有的话去</P>
<P><A href="http://java.sun.com/">http://java.sun.com/</A>下载)，用命令行进入uPortal_rel-2-5-1-quick-start目录下，很简单，先执行命令ant hsql,然后再开个命令</P>
<P>行窗口，进入这个目录下执行ant tomcatstart命令 。这样数据库和tomcat都启动了，可以在ie中用<A href="http://localhost:8080/uPortal">http://localhost:8080/uPortal</A></P>
<P>登陆了<BR>&nbsp; 注意的问题：这个步骤中注意关掉自己的防火墙，不然的话hsql就会启不动，还要注意机器的jdk是5.0版的，而且要设置JAVA_HOME</P>
<P>4.安装uPortal_rel-2-5-1版<BR>&nbsp; 首先，装Ant_1-6-5，最简单的就是把uPortal_rel-2-5-1-quick-start里的拷到uPortal_rel-2-5-1解压后的目录下，还要装上了MS </P>
<P>SQL Server和apache-tomcat-5.5.12<BR>&nbsp; 然后，修改配置，把你的数据库驱动放到lib目录下，我用的是公司以打包的sql驱动msjdbc.jar（如果你没有的话可以问我要</P>
<P>qq:89062647）,然后修改build.properties文件里的server.home为你的tomcat的目录，把jdbcDriver.jar参数改成msjdbc.jar。修改</P>
<P>properties目录里的rdbm.properties文件加上你自己的驱动，例如：<BR>jdbcDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver<BR>jdbcUrl=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=uportal;SelectMethod=Cursor;<BR>jdbcUse还要在数据库里建好一个uportal数据库<BR>这样你就可以开始编译和部署你的uportal了,至于网上说的修改PersonDirs.xml和dbloader.xml文件，对于2.5.1的版本都可以按他默</P>
<P>认的去装，也可以运行起来。<BR>在命令行下输入ant compile编译，等编译完成，再输入ant initportal初始化命令，这个步骤包括了deploy，db等命令，好了，所有动作都已完成<BR>注意问题：jdbcDriver.jar上可能会当你只设mssqlserver.jar会出错，说找不到驱动。你可以先按deploy，db命令等步骤，先那样执行看看出什么结果<BR>5.修改tomcat配置，如果你按照apache-tomcat-5.5.12默认的设置，运行不了，因为没有把数据连接池设为全局的，必须在conf文件夹下的context.xml文件中的</CONTEXT />前面加上：<BR><RESOURCELINK name="jdbc/PortalDb" type="javax.sql.DataSourcer" global="jdbc/PortalDb" /></P>]]></description>
</item><item>
<title><![CDATA[uPortal 的安装配置]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26323</link>
<author>kcruci</author>
<pubDate>2007/7/13 20:35:44</pubDate>
<description><![CDATA[uPortal 的安装配置 
<DIV class=postText>
<P><FONT color=#000000></FONT></P>
<P><FONT color=#000000>uPortal 何许人也，当然它是一个开源的Portal产品，那么在众多的Portal中为什么它能吸引我的眼球呢？原来在近期研究CAS的过程中发现了它。uPortal的单点登录部分采用了CAS的Proxy架构，而且它也是一个由美国众高校开发研制和维护的产品，本文简述了uPortal的安装与配置过程。对其的深入研究还需一定时日。</FONT></P>
<P><FONT color=#000000><SPAN class=subhead1><I>uPortal</I></SPAN> is a free, sharable portal under development by institutions of higher-education. This group sees an institutional portal as an abridged and customized version of the institutional Web presence... a "pocket-sized" version of the campus Web. Portal technology adds "customization" and "community" to the campus Web presence. Customization allows each user to define a unique and personal view of the campus Web. Community tools, such as chat, forums, survey, and so on, build relationships among campus constituencies. </FONT></P>
<P><FONT color=#000000><I>uPortal</I> is an open-standard effort using Java, XML, JSP and J2EE. It is a collaborative development project with the effort shared among several of the JA-SIG member institutions. You may download <I>uPortal</I> and use it on your site at no cost.</FONT></P>
<P><FONT color=#000000>uPortal的发行版有两种，Quick Start版和Only uPortal版，顾名思义，前者是一个包含了Servlet容器在内的可直接运行的程序，而后者则需要进行编译和部署到现有的Web容器中，这里我当然用的是后者（前者实在太无聊了）。需要使用ant对其源码进行编译。具体步骤如下：</FONT></P>
<H3><A name=uportalonly></A><FONT color=#000000>uPortal Only Distribution </FONT></H3>
<P class=title><A name=uportal-include></A><FONT color=#000000>What is included?</FONT></P>
<P><FONT color=#000000>The uPortal-only distribution is downloaded as a <I>zip </I>file which extracts to directory called <TT>uPortal_rel-2-4-2.zip </TT>. The directory contains the following... </FONT></P>
<UL type=disc>
<LI><FONT color=#000000><TT>docs </TT>- directory containing documentation about uPortal. </FONT>
<LI><FONT color=#000000><TT>src</TT> - directory hierarchy containing the source code for <EM>uPortal</EM>. </FONT>
<LI><FONT color=#000000><TT>lib</TT> - directory containing necessary <EM>jar</EM> files for the Java API's used by uPortal. </FONT>
<LI><FONT color=#000000><TT>webpages</TT> - hierarchy which contains stylesheets, image files, java servlet pages, and other necessary files for uPortal. </FONT>
<LI><FONT color=#000000><TT>properties</TT> - directory which contains properties and configuration files used by uPortal. </FONT></LI></UL>
<P><FONT color=#000000>...and the following files </FONT></P>
<UL type=disc>
<LI><FONT color=#000000><TT>build.xml </TT>- build file for use by Ant. </FONT>
<LI><FONT color=#000000><TT>build.properies </TT>- properties file for use by Ant. </FONT></LI></UL>
<P class=title><A name=uportal-know></A><FONT color=#000000>What do you need to know? </FONT></P>
<P><FONT color=#000000>Use of this distribution requires knowledge of J2EE environments and the Ant tool from the Apache Jakarta project. </FONT></P>
<P class=title><A name=uportal-require></A><FONT color=#000000>Requirements </FONT></P>
<UL type=disc>
<LI><FONT color=#000000>The Java Development Kit (JDK) version 1.3 or higher must be installed. </FONT>
<LI><FONT color=#000000>JAVA_HOME environment variable must be set. </FONT>
<LI><FONT color=#000000>The Jakarta-Ant build tool (version 1.5.3 or later). </FONT>
<LI><FONT color=#000000>A web application environment such as <EM>Tomcat</EM> or <EM>IBM Websphere</EM> </FONT>
<LI><FONT color=#000000>An SQL database such as <EM>HypersonicSQL</EM>, <EM>Oracle</EM>, or <EM>PostgreSQL</EM> </FONT></LI></UL>
<P class=title><A name=uportal-webapp></A><FONT color=#000000>Setting up a Web Application Environment </FONT></P>
<P><FONT color=#000000>The uPortal web application requires a web application enviroment such as <SPAN class=emphasis><EM>Tomcat </EM></SPAN>or <SPAN class=emphasis><EM>IBM Webshere </EM></SPAN>. If you already have a web application environment installed on a server, the uPortal context can just be deployed to that environment, otherwise you will have to install one. The build files for uPortal have been set up such that it can be easily deployed into Tomcat. The Jakarta-Tomcat servlet container can be downloaded from: </FONT><A href="http://jakarta.apache.org/tomcat/index.html" target=_top><FONT color=#000000>http://jakarta.apache.org/tomcat/index.html</FONT></A><FONT color=#000000> . Version 4.1.24 is recommended. </FONT></P>
<P class=title><A name=uportal-compile></A><FONT color=#000000>Compiling and Deploying uPortal </FONT></P>
<P><FONT color=#000000>Compiling and deploying uPortal is managed using the Jakarta Ant build environment. It is highly recommended that anyone implementing uPortal or developing channels become familiar with the Ant build tool. Documentation for Ant is available at </FONT><A href="http://jakarta.apache.org/ant"><FONT color=#000000>Jakarta-Ant web site</FONT></A><FONT color=#000000> </FONT></P>
<P><FONT color=#000000>For detailed instructions on how to compile and deploy uPortal go to the documentation page at: </FONT></P>
<P><A href="http://www.uportal.org/administrators/building.html"><FONT color=#000000>Building uPortal</FONT></A><FONT color=#000000>. </FONT></P>
<H3><FONT color=#000000>Building and Deploying uPortal</FONT></H3>
<H5><FONT color=#000000>Overview</FONT></H5>
<P><FONT color=#000000>Compiling and deploying <I>uPortal</I> is managed using the <I>Ant</I> build tool. <I>Ant</I> uses a file called <TT>build.xml</TT> for managing what is compiled and copies all necessary files into the uPortal context. The <I>uPortal</I> context can then be deployed as a complete web application running in a servlet container such as <I>Tomcat</I> or <I>IBM Websphere</I>. The <TT>build.xml</TT> file uses several properties defined in a file called<TT> build.properties</TT>. Both of these files can be found in the <TT>uPortal_rel-2-1-3</TT> directory.</FONT></P>
<H5><FONT color=#000000>Obtaining the Ant build tool</FONT></H5>
<P><FONT color=#000000>If using the <I>uPortal-only</I> release you will need to download the <I>Ant</I> build tool. It is available from </FONT><A href="http://jakarta.apache.org/ant"><FONT color=#000000>http://jakarta.apache.org/ant</FONT></A><FONT color=#000000>. Once the archive is downloaded, uncompress it and update the operating system environment such that it is available form the standard search path. It is recommended that an <TT>ANT_HOME</TT> environment be set, and <TT>ANT_HOME/bin</TT> added to the <TT>PATH</TT> environment variable. </FONT></P>
<H5><FONT color=#000000>Obtaining external dependency libraries</FONT></H5>
<P><FONT color=#000000>If using the <I>uPortal-only</I> release you will have to obtain all of the necessary external dependency libraries before attempting to compile <I>uPortal</I>. </FONT></P>
<OL>
<LI><FONT color=#000000>First create a directory for downloading the necessary packages, for example <TT>/usr/local/java</TT> (unix) or <TT>C:\usr\local\java</TT> (Windows). </FONT>
<LI><FONT color=#000000>Refer to the <TT>build.xml</TT> for a complete list of all packages you will need to obtain. Look for the comment section labeled "External Dependencies". </FONT>
<LI><FONT color=#000000>Download each of the packages from the location specifed. For example, the xalan jar files are available from </FONT><A href="http://xml.apache.org/xalan-j"><FONT color=#000000>http://xml.apache.org/xalan-j</FONT></A><FONT color=#000000>. It is recommended that the required version specified in the <TT>build.xml</TT> file be downloaded. </FONT>
<LI><FONT color=#000000>Each package typically contains jar files, documentation, and other related files in an compressed archive (zip, gzipped tar file). Uncompress each of the packages into the download directory. Most of the packages will created a subdirectory for the package with <TT>lib</TT>, <TT>doc</TT>, and other directories within that directory. </FONT>
<LI><FONT color=#000000>Edit the <TT>build.properties</TT> file and change the property values to point to the location of all the required jar files. </FONT>
<P><FONT color=#000000>For example, change:</FONT></P>
<P><FONT color=#000000><TT>xalan.jar=./lib/xalan.jar</TT><BR>to <BR><TT>xalan.jar=/usr/local/java/xalan-j_2_4_0/bin/xalan.jar</TT> </FONT></P>
<LI><FONT color=#000000>Note that there are some additional properties in <TT>build.properties</TT> which may be modified. Leave them alone for now. Typically you should not need to modify the <TT>build.xml</TT> file at all. </FONT></LI></OL>
<H5><FONT color=#000000>Compiling uPortal</FONT></H5>
<P><FONT color=#000000>Now your ready to compile <I>uPortal</I>. Go to the <TT>uPortal_rel-2-1-3</TT> directory and just type <TT>ant</TT>. <I>Ant</I> will first create a <TT>build</TT> directory, then invoke the java compiler and store all of the compiled class files into <TT>build/WEB-INF/classes</TT>. It will also copy many other files into the <TT>build</TT> directory including stylesheet files, images, and property files. If everything worked you should see a message which reads:</FONT></P>
<P><FONT color=#000000>BUILD SUCCESSFUL </FONT></P>
<P><FONT color=#000000>If something went wrong, it is most likely due to <I>Ant</I> being unable to find one or more of the external dependencies. Check the <TT>build.properties</TT> file and try again. </FONT></P>
<H5><FONT color=#000000>Deploying uPortal</FONT></H5>
<P><FONT color=#000000>The <I>Ant</I> build tool also manages the deployment of the <I>uPortal</I> application into a servlet container. It will copy everything that it compiled and stored in the <TT>build</TT> directory into a directory specified in the <TT>build.properties</TT> files as <TT>deploy.home</TT>. </FONT></P>
<P><FONT color=#000000>If using the <IT></IT>uPortal-only release you will first need to obtain a servlet container. The Tomcat servlet container is recommended. Tomcat can be downloaded from </FONT><A href="http://jakarta.apache.org/tomcat"><FONT color=#000000>http://jakarta.apache.org/tomcat</FONT></A><FONT color=#000000>. Uncompress the archive file to a location where the web application server will run. For example, on Unix, extracting the Tomcat version 4.1.24 zip file into the <TT>/usr/local</TT> directory will create a directory called <TT>/usr/local/jakarta-tomcat-4.1.24</TT> which is usually refered to with an environment variable called <TT>TOMCAT_HOME</TT>. </FONT></P>
<P><FONT color=#000000>Before deploying <I>uPortal</I> you may need to modify the <TT>build.properties</TT>. Edit the file and find the <TT>deploy.home</TT> property. Change the value such that it points to the location where <I>uPortal </I>will be deployed. For a <I>Tomcat</I> servlet container that would typically be <TT>$TOMCAT_HOME/webapps/{app.name}</TT>, for example: </FONT></P>
<P><FONT color=#000000></FONT></P>
<BLOCKQUOTE><FONT color=#000000><TT>deploy.home=/usr/local/jakarta-tomcat-4.0.4/webapps/uPortal</TT> </FONT></BLOCKQUOTE>
<P><FONT color=#000000><B>Note</B>: if you are working with the quick-start release, the deployment directory is relative to the <TT>uPortal_rel-2-1-3</TT> directory (<TT>../tomcat-4.1.24/webapps/uPortal</TT>) and should not be changed. </FONT></P>
<P><FONT color=#000000>Now you're ready to deploy <I>uPortal</I> to the servlet container. Simply type <TT>"ant deploy</TT>" to invoke the "deploy" target. If everything worked correctly you will see a BUILD SUCCESSFULL message.</FONT></P>
<H4 class=title><A name=uportal-database></A><FONT color=#000000>Setting up A Database</FONT></H4>
<P><FONT color=#000000>The uPortal system can be deployed such that a database from several different vendors may be used. Installation and configuration information about databases can be found in the:</FONT></P>
<P><A href="http://www.uportal.org/administrators/database.html"><FONT color=#000000>Database Installation and Configuration Document</FONT></A><FONT color=#000000> </FONT></P>
<H4 class=title><A name=top></A><FONT color=#000000>Setting up A Oracle Database</FONT></H4>
<H5>About Oracle </H5>
<P>Oracle is a commercial database available from <A href="http://www.oracle.com/"><FONT color=#002c99>http://www.oracle.com</FONT></A> </P>
<H5>Obtaining the Driver </H5>
<P>A Oracle JDBC driver is also available through <A href="http://www.oracle.com/"><FONT color=#002c99>http://www.oracle.com</FONT></A>. Versions for Oracle 8i and Oracle 9i are available. The driver downloads as a single "<TT>zip</TT>" file (for example, <TT>classes12.zip</TT>). The file should be stored in a directory where it will be accessible from the uPortal build environment (for example <TT>/usr/local/java/oracle/lib/classes12.zip</TT>)</P>
<P>See Issues section about possible issues using this driver.</P>
<H5>Properties Configuration </H5>
<P>The uPortal build.properties will need to be modifed. Find the property called <B>jdbcDriver</B> and change it to point to the Oracle zip/jar file, for example:</P><PRE>jdbcDriver.jar=/usr/local/java/lib/classes12.zip</PRE>
<P>The uPortal <TT>rdbm.properties</TT> file (in the properties directory) will need to modified to specify the driver properties. First, comment out the property definitions which are currently defined (most likely, for HypersonicSQL). The <TT>rdbm.properties</TT> file contains several sample entries. Uncomment the lines for the Oracle database and make whatever changes necessary to match your local database installation, For example: </P>
<BLOCKQUOTE><TT>##### Oracle - example<BR>jdbcDriver=oracle.jdbc.driver.OracleDriver<BR>jdbcUrl=jdbc:oracle:thin:@localhost:1521:uportal<BR>jdbcUser=test<BR>jdbcPassword=mypass </TT></BLOCKQUOTE>
<P>The <TT>dbloader.xml</TT> properties file (also in the properties directory) may also need to be modified. This file is used by the DbLoader tool to create the uPortal database tables and populate the database. It contains several sample entries which create db-type-mappings for different databases. Find the tags for an Oracle database and modify the db-version, driver-name, and driver-version as necessary. For example: </P>
<BLOCKQUOTE><TT>&lt;db-type-mapping&gt;<BR>&nbsp;&nbsp;&lt;db-name&gt;Oracle&lt;/db-name&gt;<BR>&nbsp;&nbsp;&lt;!-- Line break has to be here --&gt;<BR>&nbsp;&nbsp;&lt;db-version&gt;Oracle8 Enterprise Edition Release 8.0.6.2.0 - Production<BR>&nbsp;&nbsp;PL/SQL Release 8.0.6.2.0 - Production&lt;/db-version&gt;<BR>&nbsp;&nbsp;&lt;driver-name&gt;Oracle JDBC driver&lt;/driver-name&gt;<BR>&nbsp;&nbsp;&lt;driver-version&gt;8.1.6.0.0&lt;/driver-version&gt;<BR>&nbsp;&nbsp;&lt;type&gt;&lt;generic&gt;TIMESTAMP&lt;/generic&gt;&lt;local&gt;DATE&lt;/local&gt;&lt;/type&gt;<BR>&nbsp;&nbsp;&lt;!-- map more types here --&gt;<BR>&lt;/db-type-mapping&gt; </TT></BLOCKQUOTE>
<P class=content>The PersonDirs.xml file (also in the properties directory) may need to be modified; This file is used if the database is to be used to provide user directory information.</P>
<BLOCKQUOTE><TT>&lt;!-- JDBC Properties --&gt;<BR>&lt;driver&gt;oracle.jdbc.driver.OracleDriver&lt;/driver&gt;<BR>&lt;url&gt;jdbc:oracle:thin:@localhost:1521:uportal&lt;/url&gt;<BR>&lt;logonid&gt;test&lt;/logonid&gt;<BR>&lt;logonpassword&gt;mypass&lt;/logonpassword&gt;,<BR>&lt;uidquery&gt;SELECT FIRST_NAME||' '||LAST_NAME AS FIRST_LAST,<BR>FIRST_NAME, LAST_NAME, EMAIL FROM UP_PERSON_DIR WHERE USER_NAME=?&gt;&lt;/uidquery&gt; </TT></BLOCKQUOTE>
<H5>Loading the Database </H5>
<P>Loading the database requires a couple of steps</P>
<UL>
<LI>Create the database: Refer to the Oracle database documentation for instructions regarding how to create an Oracle database instances. The database name (or in this case, the Oracle SID), port number, and driver information must reflect what was defined in the rdbm.properties file 
<LI>Create the tables and populate the database: From the uPortal build directory, run "<TT>ant db</TT>" to execute the ant target which loads the database. The ant target uses the Dbloader tool. </LI></UL>
<H4 class=title><A name=complete-install></A><FONT color=#000000>Complete the Installation</FONT></H4>
<P><FONT color=#000000>Once you have compiled and deployed uPortal and setup a database for it to utilize, you still need to publish the channel fragments and internationalize the database. This can be done in one step by issuing the `ant initportal` command. Once this command completes without errors, your uPortal instance should be fully functional. </FONT></P><BR></DIV>]]></description>
</item><item>
<title><![CDATA[uPortal channels资源]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26322</link>
<author>kcruci</author>
<pubDate>2007/7/13 19:50:29</pubDate>
<description><![CDATA[<U><FONT color=#800080>&nbsp;uPortal channels资源</FONT></U> 
<DIV class=postText>
<P><A href="https://www.mis4.udel.edu/JasigCH/">https://www.mis4.udel.edu/JasigCH/</A> </P>
<P>该站点收集了一些Uportal得子模块，有cJmail等，需要注册才能下载</P><BR><BR>
<P id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=46171</P></DIV>]]></description>
</item><item>
<title><![CDATA[uPortal介绍]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26321</link>
<author>kcruci</author>
<pubDate>2007/7/13 19:47:19</pubDate>
<description><![CDATA[本文介绍了uPortal，一种开放源码的Java，XML，XSL 门户架构的优点和使用。本文假定读者没有uPortal的经验，涉及了两种版本快速开始和源码版。作者Brad Rippe介绍了快速版随带的java数据库HypersonicSQL，以及如何迁移到大型数据库如Microsoft SQL Server。最后，文章详细介绍了框架内嵌的权限验证机制。<BR>Java in Administration Special Interest Group (JA-SIG)的一组java开发者构建了uPortal，欢迎所有的java爱好者加入这个项目。<BR><BR>随着组织的成长，我们常常会发现我们不断在寻找新的途径来将新的变化，过程和政策告诉员工。我们希望雇员和行政机构能够在公司的目标，计划，事务下有机的组织起来。更进一步，我们想将尽可能丰富而不局限于某一方面的信息呈现给雇员。用Internet来展示信息看起来是个好的开始，但我们的受众能够从网上浩瀚的信息过滤出想要的部分么？<BR>在教育领域，我们也面临同样的挑战。怎样使很好地使管理层，分布，员工，学生能够对机构政策，过程很好的理解？怎样保证使学生群体接收到清晰，最新的信息来帮助他们实现各自的学习和职业目标。另外，我们希望建立学生，教师，行政，分部和职员协同交流的"社区"为学生很好实现目标提供保证。我们也希望增进信息共享时用户能分享群体的经验。同时，我们想实现新旧应用的无缝集成。<BR>一种解决方案是提供一种支持工具能够根据用户的个人资料，兴趣和专业来提供有价值的信息。但是，开发这种工具并不简单，尤其是你得考虑耗费和资源。<BR>一种好的方法是寻找已有的portals，不过如果客户化又是很麻烦的事情，也许你可以看看Java in Administration Special Interest Group (JA-SIG)开发的uPortal，uPortal是开放源码，基于的Java, XML, and XSL项目。目前的发行版包括WEB服务频道，权限，用户组管理等等。UPortal让你可以自己增加你的机构需要的新特性。它着眼于高等教育机构，一些商业组织也用它来作为构建协同社区的框架。这种框架包括插入式的被成为频道的组件，它提供用户感兴趣的信息。用户可以根据其在机构中角色选择关心的频道，同时还可以定制自己站点喜欢的样式。<BR>Uportal是免费的，但是开发组学习java，XML，XSL和门户框架是需要投入的。本文试图通过帮助你将uPortal运行起来以减少这种投入。而且，本文还介绍了如何将uPortal培植成产品数据库和她的基本认证方法。<BR>快速版<BR>为了运行uPortal，首先你得去JA-SIG Website下载一个版本。你可以选择快速版和源码版。注意你需要有jdk13或以上的java版本<BR>快速版面向没有部署门户产品环境的用户。这个版本让用户下载一个包括java数据库（HypersonicSQL），servlet容器（Apache Tomcat），构造工具（Apache Ant），uPortal源码和配置文件。快速版让你很快把uPortal运行起来。<BR>要运行这个版本，你只须解开压缩文件到指定目录。为便于说明，我使用我的安装目录c:\uportal_2-1\.，我们可以看到Ant，HypersonicSQL，Tomcat，uPortal的子目录<BR>Ant：Apache组织的基于的构建工具。Ant工具由一系列的Ant任务组成，任务可以是调用java编译器生成class文件，也可以是修改配置文件用于测试或产品环境，还可以是调用javadoc生成文档，运行单元测试等等。UPortal使用Ant来启动和终止WEB容器，生成文档，创建库表，增加用户和样式单。<BR><BR>HypersonicSQL：一种开放源码的java数据库，uPortal用来创建表存数据。尽管HypersonicSQL是免费的，但更多的产品开发环境使用Oracle, MySQL, 或 Microsoft SQL Server数据库产品。当然，HypersonicSQL非常的简单，用来做内部的uPortal演示仍然时候不错的选择。<BR>Tomcat：容纳所有uPortal's servlets 和 JSP页面。Apache Tomcat是Sun Microsystems的WEB应用规范的参考实现，Tomcat支持Servlet 2.3 specification 和 JSP 1.2.<BR>现在让这个站点运行起来，首先我们需要用ant从命令行启动数据库，进入uPortal的安装目录敲下ant hsql.，<BR>C:\uPortal_2-1&gt;ant hsql<BR>C:\uPortal_2-1\Ant_1-5<BR>Buildfile: build.xml<BR><BR>hsql:<BR>[echo] Starting HSQL<BR>[java] Server 1.6 is running<BR>[java] Press [Ctrl]+[C] to abort<BR><BR><BR>数据库可用后，你使用以下命令，来启动Tomcat访问你的uPortal<BR>C:\uPortal_2-1&gt;ant tomcatstart<BR>现在数据库和应用服务器都运行起来了，你可通过url：http://localhost:8080/uPortal/ 访问，默认情况下你可使用这些帐号登录进uPortal访问不同的界面和频道。<BR>Portal默认的帐号<BR>Default portal usersUsername Password&nbsp;<BR><BR>demo demo&nbsp;<BR>student student&nbsp;<BR>faculty faculty&nbsp;<BR>staff staff&nbsp;<BR>developer developer&nbsp;<BR><BR><BR>源码发行版<BR>uPortal的第二个发行版是面向那些有J2 EE和产品数据库环境的。这个版本只包括uPortal代码和编译代码，创建数据库表，生成文档的配置文件。建议用户要有java应用服务器和关系数据库的经验。这个版本需要用户自己配置运行环境。<BR><BR>UPortal随带一个仅有100KB的java数据库叫HypersonicSQL。这个关系数据库系统易于使用并且是免费的。HypersonicSQL支持索引，事务，连接，参照约束，java存储过程和函数，以及用户安全。数据库还包括一个类似Microsoft's SQL Analyzer的数据库管理器，但是HypersonicSQL是正在开发中的数据库，建议基于uPortal的方案用产品数据库后台部署，由于绝大多数的机构都有可用的数据库，uPortal也提供对其它数据库的简单接口。<BR><BR>迁移到产品数据库<BR><BR>现在你已经使用了uPortal并且了解一些特性，你也许希望将数据转移到更稳定的数据库中去，uPortal的 org.jasig.portal.RDBMServices 类提供了数据库服务，最初版本的使用一种开放源码对象池PoolMan，现在的版本使用RDBMServices，提供的连接池是驱动器实现的，可以通过配置使用你自己的产品数据库<BR>Listing 1&nbsp;<BR><BR><BR>jdbcDriver=org.hsqldb.jdbcDriver<BR>jdbcUrl=jdbc:hsqldb:hsql://localhost:8887<BR>jdbcUser=sa<BR>jdbcPassword=<BR><BR><BR>My configuration resembles:&nbsp;<BR>我的配置是：<BR>Listing 2&nbsp;<BR><BR><BR>jdbcDriver=com.inet.tds.TdsDriver<BR>jdbcUrl=jdbc:inetdae7:localhost:1433<BR>jdbcUser=PortalUser<BR>jdbcPassword=<BR><BR><BR>我的配置包括两个数据库。分别存放uPortal主表和uPortal频道表。所有的频道连接uportal_channels库，uPortal框架连到uportal的存取显示，权限信息和其他相关信息<BR>除了在rdbm.properties增加属性外，因为我们使用第三方JDBC驱动程序，所以需要将jar文件放到uPortal's 库目录并修改uPortal_rel-2-1-1 目录下build.properties文件。<BR>jdbcDriver.jar=./lib/[yourJDBCDriver].jar<BR><BR>用以下命令使配置生效<BR><BR>c:\uportal_2-1\ uPortal_rel-2-1-1\ant deploy<BR><BR>用以下命令测试：<BR>C:\uPortal_2-1-1\uPortal_rel-2-1-1&gt;ant dbtest<BR><BR>连接定义好后，你可通过以下命令创建表结构：<BR><BR>c:\uportal_2-1\uPortal_rel-2-1-1\ant db<BR><BR>该命令启动uPortal数据库载入器，它将创建uPortal运行需要的所有表，数据库载入器使用以下xml中的定义创建表结构：<BR><BR>data.xml：包括需要插入表中的数据一旦表创建好后，包括所有的频道，拥护和界面样式信息<BR>dbloader.xml：dbloader的配置信息。是否删除所有表，创建新表，或修改数据库数据<BR><BR>tables.xml：存放数据库结构<BR>到这里，你应该可以得到跟你用快速版一样的uPortal效果了。但是，现在uPortal应该连接你的数据库后端而不是用它自带的HypersonicSQL。<BR><BR>内嵌认证机制<BR>uPortal数据库提供了基本认证方法。用户名和密码在UP_PERSON_DIR表存取。密码使用MD5加密。尽管很多环境使用其他如LDAP或NT ACLs来做用户验证，uPortal提供了用户和权限的基本结构。在uPortal中创建用户，你必须使用另一个叫md5passwd 的Ant任务。在命令行下敲入<BR><BR>ant md5passwd -Dusername=brippe<BR><BR><BR>你将看到提示输入密码。任务加密密码并将用户信息放入UP_PERSON_DIR，这时，用户可以登陆进uPortal，uPortal使用UP_PERSON_DIR验证用户。我手上版本的uPortal使用md5passwd加密ANT任务时有点问题。相关的class路径包括xercesImp.jar 和 xml-apis.jar，我通过如下修改纠正了错误。<BR><BR>&lt;classpath&gt;<BR>&lt;pathelement path="${build.home}"/&gt;<BR>&lt;pathelement path="${build.home}/WEB-INF/classes"/&gt;<BR>&lt;pathelement path="${jdbcDriver.jar}"/&gt;<BR>&lt;pathelement path="${log4j.jar}"/&gt;<BR>&lt;pathelement path="${xercesImpl.jar}"/&gt;<BR>&lt;pathelement path="${xml-apis.jar}"/&gt;<BR>&lt;/classpath&gt;<BR><BR><BR>Xerces jar包含着Xerces XML解释器，xml-apis.jar是的XML的javaAPIs，里边包括java1。4的SAX，DOM和其他XMLAPI。<BR>顺便说明，一旦用户登录进uPortal，显示信息被放在UP_USER表中。这个表存放用户看到哪一种界面。<BR><BR>开始你的uPortal开发<BR>Uportal提供了扩展基础使你的开发不会从很细节的地方开始。整个框架还集成了其它没有在这里讨论的功能：uPortal支持审计，WEB服务，用户管理等等。UPortal最好特性是它的开发架构允许快速创建新的频道和分布世界的频道开发协作关系。可用的频道包括聊天，论坛，教学，天气，记事本，通告，问答，分类广告等等。虽然软件是教育机构的协同努力开发的，但用于构建其它门户环境也是非常可行的<BR><BR>
<P id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=46067</P>]]></description>
</item><item>
<title><![CDATA[Popup ToolTip/STICKY tooltips]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26319</link>
<author>kcruci</author>
<pubDate>2007/7/13 17:03:14</pubDate>
<description><![CDATA[
<P><FONT size=5><STRONG><FONT color=#003399>Popup ToolTip /</FONT></STRONG>STICKY tooltips</FONT> </P><FONT face=新宋体>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;>
<P><FONT face=新宋体>&lt;!DOCTYPE&nbsp;<FONT color=#7f0055><B>html&nbsp;</B></FONT><FONT color=#000000>PUBLIC&nbsp;</FONT><FONT color=#2a00ff>"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;</FONT><FONT color=#7f0055><B>html</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;head&gt;</FONT><BR><FONT color=#000000>&lt;title&gt;overLIB&nbsp;-&nbsp;Homepage&lt;/title&gt;</FONT><BR><FONT color=#000000>&lt;/head&gt;</FONT><BR><FONT color=#ffffff></FONT><BR><FONT color=#000000>&lt;</FONT><FONT color=#7f0055><B>body</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;div&nbsp;id=</FONT><FONT color=#2a00ff>"overDiv"&nbsp;</FONT><FONT color=#000000>style=</FONT><FONT color=#2a00ff>"position:absolute;&nbsp;visibility:hidden;&nbsp;z-index:1000;"</FONT><FONT color=#000000>&gt;&lt;/div&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"JavaScript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"javascript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib_anchor.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"javascript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib_crossframe.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"javascript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib_cssstyle.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"javascript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib_exclusive.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"javascript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib_followscroll.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"javascript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib_hideform.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"javascript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib_shadow.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;language=</FONT><FONT color=#2a00ff>"javascript"&nbsp;</FONT><FONT color=#000000>src=</FONT><FONT color=#2a00ff>"overlib_centerpopup.js"</FONT><FONT color=#000000>&gt;&lt;/script&gt;</FONT><BR><FONT color=#ffffff></FONT><BR><FONT color=#000000>&lt;a&nbsp;href=</FONT><FONT color=#2a00ff>"javascript:void(0);"&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onmouseover=</FONT><FONT color=#2a00ff>"return&nbsp;overlib('Click&nbsp;on&nbsp;me!');"&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onclick=</FONT><FONT color=#2a00ff>"return&nbsp;overlib('This&nbsp;one&nbsp;stays&nbsp;around&nbsp;for&nbsp;a&nbsp;while!',&nbsp;STICKY,&nbsp;CAPTION,&nbsp;'Sticky');"&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onmouseout=</FONT><FONT color=#2a00ff>"return&nbsp;nd();"</FONT><FONT color=#000000>&gt;click&lt;/a&gt;</FONT><BR><FONT color=#ffffff></FONT><BR><FONT color=#ffffff></FONT><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>body</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>html</B></FONT><FONT color=#000000>&gt;</FONT></FONT></P></DIV></FONT>]]></description>
</item><item>
<title><![CDATA[正则表达式 --JavaScript 实现基础]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26309</link>
<author>kcruci</author>
<pubDate>2007/7/13 12:46:49</pubDate>
<description><![CDATA[
<DIV class=postcontent><FONT face=Verdana size=2>&nbsp;&nbsp;&nbsp; 作者：<A href="http://www.blogjava.net/flyingis/" target=_blank><FONT color=#000080>Flyingis</FONT></A><BR><BR>&nbsp;&nbsp;&nbsp; 正则表达式用来从某一段字符串中匹配所需要的字符，这些字符可以非常简单，也可以非常复杂。JavaScript生来就对正则表达式有着良好的支持，在网络的字符搜索匹配中发挥着重要的作用。<BR><BR>&nbsp;&nbsp;&nbsp; JavaScript通过RegExp类来支持正则表达式，举一个最简单的例子：<BR>&nbsp;&nbsp;<BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,255)">new</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;RegExp(</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">);</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; 它可以匹配一个字符串中出现的第一个"apple"字符串，并且对大小写敏感。在构造方法中加入第二个参数"g"则代表的搜索出字符串中所有的 "apple"，这里"g"代表"global"。如果第二个参数为"i"，则代表着case-insensitive，匹配过程中将不考虑字母的大小写。将上述两者综合起来，可以搜索出所有"apple"字符串，并且不考虑大小写问题。<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,255)">new</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;RegExp(</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">,&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">gi</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">);&nbsp;</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; 正则表达式有着并不唯一的表示方法，使用Perl语言中的语法，可以将上述表达式表示为：<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">gi;</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; 创建了一个RegExp对象后，RegExp的方法可以构造出不同的匹配方式，因为正则表达式是对字符串进行的操作，所以String的一些方法在构造正则表达式的过程中也扮演着重要角色。<BR><BR>&nbsp;&nbsp;&nbsp; <STRONG>RegExp对象的方法</STRONG>&nbsp;<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;sampleString&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">Greenapple</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A>alert(regApple.test(sampleString));</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; 上面代码输出的结果是"true"，因为sampleString中包含了需要匹配的字符串"apple"，这是最简单的检测方式。有时，我们需要知道匹配的详细结果，例如：<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;sampleString&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">green&nbsp;apples,&nbsp;red&nbsp;apples</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">g;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;arr&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple.exec(sampleString);</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; 通过使用exec()方法，返回的arr是关于匹配结果的一个数组，包括每一个匹配的值及其所在的段，例如上例中是"green apples"还是"red apples"。match()方法有着和exec()相同的功能，只是表达方式不同：<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;sampleString&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">green&nbsp;apples,&nbsp;red&nbsp;apples</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">g;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;arr&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;sampleString.match(regApple);</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; search()方法和indexOf()比较类似，返回第一个匹配的字符串所在的位置：<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;sampleString&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">green&nbsp;apples,&nbsp;red&nbsp;apples</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">gi;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A>alert(sampleString.search(regApple));&nbsp;&nbsp;</SPAN><SPAN style="COLOR: rgb(0,128,0)">//</SPAN><SPAN style="COLOR: rgb(0,128,0)">输出"6"</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; <STRONG>String的方法<BR></STRONG><BR>&nbsp;&nbsp;&nbsp; String的replace()方法可以将指定的字符串替换为另一个字符串：<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;sampleString&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">There&nbsp;is&nbsp;a&nbsp;green&nbsp;apple.</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A>alert(sampleString.replace(</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">green</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">,&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">red</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">));&nbsp;&nbsp;</SPAN><SPAN style="COLOR: rgb(0,128,0)">//</SPAN><SPAN style="COLOR: rgb(0,128,0)">输出"There&nbsp;is&nbsp;a&nbsp;red&nbsp;apple."</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; 将replace()的第一个参数替换为一个正则表达式，可以达到同样的效果：<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;sampleString&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">There&nbsp;is&nbsp;a&nbsp;green&nbsp;apple.</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;regApple&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A>alert(sampleString.replace(regApple,&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">red</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">));&nbsp;&nbsp;</SPAN><SPAN style="COLOR: rgb(0,128,0)">//</SPAN><SPAN style="COLOR: rgb(0,128,0)">输出"There&nbsp;is&nbsp;a&nbsp;red&nbsp;apple."</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; replace()的第二个参数可以替换为一个function()，该function()接受一个匹配字符串作为参数，返回一个替换字符串。(存在疑问)<BR><BR>&nbsp;&nbsp;&nbsp; 使用正则表达式可以实现String的split()方法相同的功能。<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;fruit&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple,pear,lemon</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;arr&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;fruit.split(</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">,</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">);</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; 使用正则表达式：<BR><BR></FONT>
<DIV style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><FONT face=Verdana size=2><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;fruit&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">apple,pear,lemon</SPAN><SPAN style="COLOR: rgb(0,0,0)">"</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;reg&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">\,</SPAN><SPAN style="COLOR: rgb(0,0,0)">/</SPAN><SPAN style="COLOR: rgb(0,0,0)">;<BR><A href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" target=_blank><IMG onmousewheel="return bbimg(this)" title=点击在新窗口查看原始图片 src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" onload="java_script_:if(this.width>500)this.width=500" align=top border=0></A></SPAN><SPAN style="COLOR: rgb(0,0,255)">var</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;arr&nbsp;</SPAN><SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN style="COLOR: rgb(0,0,0)">&nbsp;fruit.split(reg);</SPAN></FONT></DIV><FONT face=Verdana size=2><BR>&nbsp;&nbsp;&nbsp; 以上这些都是JavaScript正则表达式最基本的一些特性，实现了一些最基本的功能，这些都不是正则表达式真正的强大之处，在作者接下来的随笔中会继续介绍。</FONT> </DIV>]]></description>
</item><item>
<title><![CDATA[javascript  继承2]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26307</link>
<author>kcruci</author>
<pubDate>2007/7/13 11:24:16</pubDate>
<description><![CDATA[&nbsp; javascript的继承机制并不是明确规定的,而是通过模仿实现的,意味着继承不是由解释程序处理,开发者有权决定最适合的继承方式. 下面我给出几种常用的方法:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>1 .对象冒充<BR></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原理: 构造函数使用this关键字给所有属性和方法赋值, 因为构造函数只是一个函数,所以可以使ClassA的构造函数成为classB的方法,然后调用它.这样classB就会收到classA的构造函数中定义的属性和方法.例子:<BR>&nbsp;&nbsp; function classA(name)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.name=name;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.showName=function(){alert(this.name);}<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp; function classB(name)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.newMethod = classA;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.newMethod(name);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;obj = new classA("hero");<BR>&nbsp;&nbsp; objB = new classB("dby");<BR>&nbsp;&nbsp; obj.showName(); //&nbsp;&nbsp; print hero<BR>&nbsp;&nbsp; objB.showName(); // print dby&nbsp; 说明classB 继承了classA的方法.<BR>&nbsp;&nbsp; 对象冒充可以实现多重继承&nbsp; 例如<BR>&nbsp;&nbsp; function classz(){<BR>&nbsp;&nbsp; this.newMethod = classX;<BR>&nbsp;&nbsp; this.newMethod();<BR>&nbsp;&nbsp; delete this.newMethod;<BR>&nbsp;&nbsp; this.newMethod=classY;<BR>&nbsp;&nbsp; this.newMethod():<BR>&nbsp;&nbsp; delete this.newMethod;<BR>&nbsp; }<BR>&nbsp;&nbsp;但是如果classX和classY有相同的属性或者方法,classY具有高优先级.<BR><STRONG>&nbsp;&nbsp; 2.call()方法<BR></STRONG>&nbsp;&nbsp;&nbsp; call方法使与经典的对象冒充法就相近的方法,它的第一个参数用作this的对象,其他参数都直接传递给函数自身.<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; function sayName(perfix)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;alert(perfix+this.name);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; obj= new Object();<BR>&nbsp;&nbsp; obj.name="hero";<BR>&nbsp;&nbsp; sayName.call(obj,"hello," );<BR>&nbsp;&nbsp; function classA(name)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name=name;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.showName=function(){alert(this.name);};<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; function classB(name)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;classA.call(this,name);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; objB = new classB("bing");<BR>&nbsp;&nbsp; objB.showName();////说明classB继承classA的showName方法<BR>&nbsp; <STRONG>3.apply()方法<BR>&nbsp;&nbsp;&nbsp; </STRONG>aplly()方法有2个参数,一个用作this对象,一个使传递给函数的参数数组.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function sayName(perfix)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;alert(perfix+this.name);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; obj= new Object();<BR>&nbsp;&nbsp; obj.name="hero";<BR>&nbsp;&nbsp; sayName.aplly(obj,new Array("hello,")&nbsp;);<BR>&nbsp; <STRONG>4. 原型链</STRONG><BR>&nbsp;&nbsp; prototype对象的任何属性和方法都会被传递给对应类的所有实例,原型链就是用这种方式来显现继承.<BR>&nbsp;&nbsp;&nbsp; function classA (){}<BR>&nbsp;&nbsp;&nbsp; classA.prototype.name="hero";<BR>&nbsp;&nbsp;&nbsp; classA.prototype.showName=function(){alert(this.name)}<BR>&nbsp;&nbsp;&nbsp; function classB(){}<BR>&nbsp;&nbsp; classB.prototype=new classA();<BR>&nbsp;&nbsp;&nbsp;objb = new classB()<BR>&nbsp;&nbsp; objb.showName();//print hero&nbsp; 说明b继承了a的方法<BR><FONT color=#000000>&nbsp;&nbsp; 这里需要注意 调用classA的构造函数时,没有给它传递参数,这是原型链的标准做法,确保函数的构造函数没有任何参数.</FONT><FONT color=#ff0000><BR></FONT>&nbsp;<FONT color=#ff0033><STRONG>&nbsp; 并且 子类的所有属性和方法,必须出现在prototype属性被赋值后,应为在它之前赋的值会被删除.因为对象的prototype属性被替换成了新对象,添加了新方法的原始对象将被销毁.</STRONG></FONT><BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 5 混和方式<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就是用冒充方式 定义构造函数属性,用原型法定义对象方法.<BR>&nbsp;&nbsp; function classA(name)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name=name;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; classA.prototype.showName=function(){alert(this.name)}<BR>&nbsp;&nbsp; function classB(name)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;classA.call(this,name);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; classB.prototype = new classA();<BR>&nbsp;&nbsp; classB.prototype.showName1=function(){alert(this.name+"*****");};<BR>&nbsp;&nbsp; obj = new classB("hero");<BR>&nbsp;&nbsp; obj.showName();<BR>&nbsp;&nbsp; obj.showName1();<BR>&nbsp; 在classB的构造函数中通过调用call方法 继承classA中的name属性,用原型链来继承classA的showName方法]]></description>
</item><item>
<title><![CDATA[javascript  继承]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26305</link>
<author>kcruci</author>
<pubDate>2007/7/13 10:55:31</pubDate>
<description><![CDATA[<P>javascript 是一种基于原型的语言,没有显示的继承符号,它有2种隐式的方式可以实现面向对象中的继承:<BR>&nbsp;&nbsp;&nbsp;1 .&nbsp;&nbsp;&nbsp;在子类中显示的调用父类的构造函数.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例子:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp; parent ()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.first = parentFirst;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.second = parentSecond;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function child()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.inherrit = parent;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.inherrit();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.second = childSecond;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function parentFirst()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(" parent First method call !");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function parentSecond()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(" parent second method call !");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function childFirst()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("child first method call !");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function childSecond()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("child second method call !");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp; printClass()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;newObj = new child();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newObj.first();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newObj.second();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printClass();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;发现最后打印出来结果是 parent first method call !&nbsp;&nbsp; child second method&nbsp;&nbsp;&nbsp;&nbsp;call !<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们可以看到,first 和second 方法最先在parent类中定义,在child类中 second方法又被重载了.child类的构造函数的前2行的作用就是做了一个简单的原始继承操作.<BR>先把parent的原型赋给child的inherrit方法,执行完parent的构造函数后parent的属性就全在child的属性列表里了.因为 child中是用this来调用parent的构造函数的,javascript解释器会把parent中的this,child中的this 理解成一个作用域下的this,所以就产生了继承效果.</P>
<P><BR>&nbsp; 2.&nbsp;&nbsp;&nbsp;继承的第二种方式:&nbsp; prototype方式.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把父类对象赋给 子类的prototype属性.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把我们的子类改一下:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function child()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.second = childSecond;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;加入&nbsp;&nbsp; child.prototype = new&nbsp;parent;这一行语句,执行,发现和第一种方式得到同样的结果.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用prototype 方式继承比调用构造函数方式更灵活.用prototype方式可以实现动态继承,比如你用prototype方式给父类动态增加一个属性或者方法,那么子类自动就会获得这个属性或者方法.&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在javascript中你可以随意的给对象增加属性或者方法,但是当你给一个实例化的对象增加属性的时候,这个增加的属性只属于这个实例,例如:<BR>&nbsp;&nbsp; var newClass = new subClass();<BR>&nbsp; newClass.addprop = "新增属性";<BR>如果想为该类的所有实例都增加一个属性或者方法,要用prototype,&nbsp; 例子<BR>&nbsp;&nbsp; var newClass = new child();<BR>&nbsp; child.prototype.addprop = "新增属性";<BR>&nbsp; 这样newClass里就会有addprop这个属性了.<BR>这也是我们给javascript内部对象增加属性或者方法的方式,比如 String.prototype.toString={return "aaa";},不过javascript的内部对象的prototype属性都是只读的,所以只能增加内部对象的属性,不能修改.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 突然感觉倒&nbsp;prototype,用处原来如此之多,上边写的不过是其中一小步分啊.<BR></P>]]></description>
</item><item>
<title><![CDATA[javascript+dom+xml实现分页]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26301</link>
<author>kcruci</author>
<pubDate>2007/7/13 9:44:24</pubDate>
<description><![CDATA[<A><FONT size=3>web的技术中，分页是一个老的不能再老的，但大家津津乐道的问题，随着xml技术的日渐应用，把xml应用到分页当中，也是一种可能。<BR>共有两个文件tmh.htm&nbsp;&amp;&nbsp;tt.xml<BR>源代码如下：<BR>tmh.htm<BR>___________________________________________________<BR>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;>&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.0&nbsp;Transitional//EN"&gt;<BR>&lt;HTML&gt;<BR>&lt;HEAD&gt;<BR>&lt;TITLE&gt;&nbsp;New&nbsp;Document&nbsp;&lt;/TITLE&gt;<BR>&lt;META&nbsp;NAME="Generator"&nbsp;CONTENT="EditPlus"&gt;<BR>&lt;META&nbsp;NAME="Author"&nbsp;CONTENT=""&gt;<BR>&lt;META&nbsp;NAME="Keywords"&nbsp;CONTENT=""&gt;<BR>&lt;META&nbsp;NAME="Description"&nbsp;CONTENT=""&gt;<BR>&lt;link&nbsp;rel="stylesheet"&nbsp;href="../website.css"&nbsp;type="text/css"&gt;<BR>&lt;/HEAD&gt;<BR>&lt;BODY&gt;<BR>&lt;script&nbsp;language="javascript"&gt;&nbsp;<BR>//****************变量相关定义**************<BR>//*&nbsp;author:海仔&nbsp;*<BR>//*&nbsp;Email:rautinee@21cn.com&nbsp;*<BR>//*本程序可自由传播使用，但请务必保留此信息&nbsp;*<BR>//****************************************<BR>var&nbsp;pagenum=4;&nbsp;//每页显示几条信息&nbsp;<BR>var&nbsp;page=0&nbsp;;<BR>var&nbsp;contpage&nbsp;;<BR>var&nbsp;BodyText="";<BR>var&nbsp;xmlDoc&nbsp;=&nbsp;new&nbsp;ActiveXObject("Microsoft.XMLDOM"<A href="http://www.blogcn.com/images/wink.gif" target=_blank><IMG onclick="window.open('/images/wink.gif','_blank');" alt="" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript :if(this.width onmousewheel='return bbimg(this)' border='0'  border='0' title='点击在新窗口查看原始图片' onload='java_script_:if(this.width>500)this.width=500'></a>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;<BR>var&nbsp;mode="member";<BR>var&nbsp;toolBar;<BR>xmlDoc.async="false"&nbsp;<BR>xmlDoc.load("tt.xml"<A href="http://www.blogcn.com/images/wink.gif" target=_blank><IMG onclick="window.open('/images/wink.gif','_blank');" alt="" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript :if(this.width onmousewheel='return bbimg(this)' border='0'  border='0' title='点击在新窗口查看原始图片' onload='java_script_:if(this.width>500)this.width=500'></a>screen.width/2)this.width=screen.width/2" vspace=2 border=0><BR>//***************这个地方是你根据实际取得的字段名称来改了<BR>header ="&lt;TABLE&nbsp;border=1&gt;&lt;tr&gt;&lt;td&gt;姓名&lt;/td&gt;&lt;td&gt;图标 &lt;/td&gt;&lt;td&gt;IP地址&lt;/td&gt;&lt;td&gt;email&lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;日期&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt; /td&gt;&lt;/tr&gt;";<BR><BR>//检索的记录数<BR>maxNum&nbsp;=&nbsp;xmlDoc.getElementsByTagName(mode).length<BR>//每条记录的列数<BR>column=xmlDoc.getElementsByTagName(mode).item(0).childNodes<BR>//每条记录的列数<BR>colNum=column.length<BR>//页数<BR>pagesNumber=Math.ceil(maxNum/pagenum)-1;&nbsp;<BR>pagesNumber2=Math.ceil(maxNum/pagenum);&nbsp;<BR>//上一个页面<BR>function&nbsp;UpPage(page)<BR>{<BR>thePage="前一页";<BR>if(page+1&gt;1)&nbsp;thePage="&lt;A&nbsp;HREF='#'&nbsp;onclick='Javascript:return&nbsp;UpPageGo()'&gt;前一页&lt;/A&gt;";<BR>return&nbsp;thePage;<BR>}<BR>function&nbsp;NextPage(page)<BR>{<BR>thePage="后一页";<BR>if(page&lt;pagesNumber)&nbsp;thePage="&lt;A&nbsp;HREF='#'&nbsp;onclick='Javascript:return&nbsp;NextPageGo()'&gt;后一页&lt;/A&gt;";<BR>return&nbsp;thePage;<BR>}<BR><BR>function&nbsp;UpPageGo(){&nbsp;<BR><BR>if(page&gt;0)&nbsp;page--;&nbsp;<BR>getContent();&nbsp;<BR>BodyText="";&nbsp;<BR><BR>}&nbsp;<BR>//当前的页数<BR>function&nbsp;currentPage()<BR>{<BR>var&nbsp;cp;<BR>cp="当前是第&nbsp;"+(page+1)+"&nbsp;页";<BR>return&nbsp;cp;<BR>}<BR>//总共的页数<BR>function&nbsp;allPage()<BR>{<BR>var&nbsp;ap;<BR>ap='总共&nbsp;'+(pagesNumber+1)+'&nbsp;页';<BR>return&nbsp;ap<BR>}<BR>function&nbsp;NextPageGo()<BR>{&nbsp;<BR>if&nbsp;(page&lt;pagesNumber)&nbsp;page++;<BR><BR>getContent();&nbsp;<BR>BodyText="";<BR>}&nbsp;<BR><BR>//显示分页状态栏<BR>function&nbsp;pageBar(page)<BR>{<BR>var&nbsp;pb;<BR>pb=UpPage(page)+"&nbsp;"+NextPage(page)+"&nbsp;"+currentPage()+"&nbsp;"+allPage()+selectPage();<BR>return&nbsp;pb;<BR>}<BR>function&nbsp;changePage(tpage)<BR>{&nbsp;<BR><BR>page=tpage<BR>if(page&gt;=0)&nbsp;page--;&nbsp;<BR>if&nbsp;(page&lt;pagesNumber)&nbsp;page++;<BR>getContent();&nbsp;<BR>BodyText="";<BR>}<BR>function&nbsp;selectPage()<BR>{<BR>var&nbsp;sp;<BR>sp="&lt;select&nbsp;name='hehe'&nbsp;onChange='javascript :changePage(this.options[this.selectedIndex].value)'&gt;";<BR>//sp="&lt;select&nbsp;name='hehe'&nbsp;onChange='alert(this.options[this.selectedIndex].value)'&gt;";<BR>sp=sp+"&lt;option&nbsp;value=''&gt;&lt;/option&gt;";<BR>for&nbsp;(t=0;t&lt;=pagesNumber;t++)<BR>{<BR>sp=sp+"&lt;option&nbsp;value='"+t+"'&gt;"+(t+1)+"&lt;/option&gt;";<BR>}<BR>sp=sp+"&lt;/select&gt;"<BR>return&nbsp;sp;<BR>}<BR><BR>function&nbsp;getContent()<BR>{<BR><BR>if&nbsp;(!page)&nbsp;page=0;<BR>n=page*pagenum;<BR>endNum=(page+1)*pagenum;<BR>if&nbsp;(endNum&gt;maxNum)&nbsp;endNum=maxNum;<BR>BodyText=header+BodyText;<BR>for&nbsp;(;n&lt;endNum;n++)<BR>{<BR><BR>BodyText=BodyText+"&lt;TR&gt;";<BR>for&nbsp;(m=0;m&lt;=colNum-1;m++)<BR>{&nbsp;<BR>mName=column.item(m).tagName;<BR>BodyText=BodyText+("&lt;TD&gt;"+xmlDoc.getElementsByTagName(mName).item(n).text+"&lt;/TD&gt;"<A href="http://www.blogcn.com/images/wink.gif" target=_blank><IMG onclick="window.open('/images/wink.gif','_blank');" alt="" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript :if(this.width onmousewheel='return bbimg(this)' border='0'  border='0' title='点击在新窗口查看原始图片' onload='java_script_:if(this.width>500)this.width=500'></a>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;<BR>}<BR>BodyText=BodyText+"&lt;/TR&gt;"<BR>mm="";<BR>}<BR>showhtml.innerHTML=BodyText+"&lt;/table&gt;"+pageBar(page);&nbsp;<BR><BR>BodyText=""<BR>}<BR>&nbsp;<BR><BR>&lt;div&nbsp;id="showhtml"&gt;&lt;/div&gt;<BR><BR>if&nbsp;(maxNum==0)<BR>{<BR>document.write("没有检索到合适的人才信息"<A href="http://www.blogcn.com/images/wink.gif" target=_blank><IMG onclick="window.open('/images/wink.gif','_blank');" alt="" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript :if(this.width onmousewheel='return bbimg(this)' border='0'  border='0' title='点击在新窗口查看原始图片' onload='java_script_:if(this.width>500)this.width=500'></a>screen.width/2)this.width=screen.width/2" vspace=2 border=0><BR>}<BR>else<BR>{<BR>getContent()<BR>}<BR><BR><BR>&lt;/BODY&gt;<BR>&lt;/HTML&gt;<BR></A><A></DIV><A href="http://www.blogcn.com/images/wink.gif" target=_blank><BR>//下面是tt.xml的代码<BR><BR><BR><BR>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="GB2312"?&gt;<BR>&lt;rautinee&gt;<BR><BR>&lt;member&nbsp;id='1'&gt;&nbsp;<BR>&lt;name&gt;海仔&lt;/name&gt;<BR>&lt;loginName&gt;rautinee&lt;/loginName&gt;<BR>&lt;email&gt;rautinee@btamail.net.cn&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='2'&gt;<BR>&lt;name&gt;刚强&lt;/name&gt;<BR>&lt;loginName&gt;hehe&lt;/loginName&gt;<BR>&lt;email&gt;rautinee@chinamanagers.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='3'&gt;<BR>&lt;name&gt;金华刚&lt;/name&gt;<BR>&lt;loginName&gt;nature_it&lt;/loginName&gt;<BR>&lt;email&gt;rautinee_sea@hotmail.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='4'&gt;<BR>&lt;name&gt;的简强&lt;/name&gt;<BR>&lt;loginName&gt;tank&lt;/loginName&gt;<BR>&lt;email&gt;tank@163.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='7'&gt;<BR>&lt;name&gt;合资&lt;/name&gt;<BR>&lt;loginName&gt;kaka&lt;/loginName&gt;<BR>&lt;email&gt;kaka@eyou.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='6'&gt;<BR>&lt;name&gt;加个人&lt;/name&gt;<BR>&lt;loginName&gt;apple&lt;/loginName&gt;<BR>&lt;email&gt;apple@163.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='8'&gt;<BR>&lt;name&gt;null&lt;/name&gt;<BR>&lt;loginName&gt;sunny&lt;/loginName&gt;<BR>&lt;email&gt;rautinee@eyou.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='10'&gt;<BR>&lt;name&gt;宝贝&lt;/name&gt;<BR>&lt;loginName&gt;index&lt;/loginName&gt;<BR>&lt;email&gt;rautinee@21cn.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='12'&gt;<BR>&lt;name&gt;null&lt;/name&gt;<BR>&lt;loginName&gt;login&lt;/loginName&gt;<BR>&lt;email&gt;webmaster@chinamanagers.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='13'&gt;<BR>&lt;name&gt;jiang&lt;/name&gt;<BR>&lt;loginName&gt;123&lt;/loginName&gt;<BR>&lt;email&gt;japing@chianmanagers.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='14'&gt;<BR>&lt;name&gt;null&lt;/name&gt;<BR>&lt;loginName&gt;world&lt;/loginName&gt;<BR>&lt;email&gt;rautinee@21cn.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='15'&gt;<BR>&lt;name&gt;null&lt;/name&gt;<BR>&lt;loginName&gt;swallow&lt;/loginName&gt;<BR>&lt;email&gt;swallow@chinamanagers.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='16'&gt;<BR>&lt;name&gt;魏格&lt;/name&gt;<BR>&lt;loginName&gt;hotmail&lt;/loginName&gt;<BR>&lt;email&gt;rautinee_sea@hotmail.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='17'&gt;<BR>&lt;name&gt;null&lt;/name&gt;<BR>&lt;loginName&gt;wrong&lt;/loginName&gt;<BR>&lt;email&gt;wrong@chinamanagers.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='18'&gt;<BR>&lt;name&gt;null&lt;/name&gt;<BR>&lt;loginName&gt;leah&lt;/loginName&gt;<BR>&lt;email&gt;leah@chinamanagers.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;member&nbsp;id='19'&gt;<BR>&lt;name&gt;null&lt;/name&gt;<BR>&lt;loginName&gt;ttth&lt;/loginName&gt;<BR>&lt;email&gt;rautinee@21cn.com&lt;/email&gt;&lt;/member&gt;<BR><BR>&lt;/rautinee&gt;<BR>目前好像是只支持&gt;IE5.0</FONT></A>]]></description>
</item><item>
<title><![CDATA[Document 对象的常用方法]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26300</link>
<author>kcruci</author>
<pubDate>2007/7/13 9:37:27</pubDate>
<description><![CDATA[<A><FONT size=3>主要概述一些有用的基础的DOM的方法以及怎样用使用javascript使用它们。</FONT></A> 
<DIV><FONT size=3>可以实现比如动态地新建控制移动HTML元素。<BR></FONT></DIV>
<DIV><STRONG><SPAN style="FONT-SIZE: 14pt">Document </SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 14pt">对象的常用方法</SPAN></STRONG></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=3><STRONG>1</STRONG><STRONG>、</STRONG><STRONG>getElementById(id) </STRONG></FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=3>通过元素的ID访问元素，这是DOM一个基础的访问页面元素的方法，我们要经常用到它. </FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=3>例如下面的例子，我们可以同DIV的ID迅速的访问到它，而不必通过DOM层层遍历， </FONT></DIV>
<DIV>&nbsp;</DIV><FONT size=3>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;><FONT size=3>&lt;body&gt;&nbsp;<BR>&lt;div id=’divid’&gt;&lt;p&gt;h&lt;/p&gt;&nbsp;<BR>Just for testing;&nbsp;<BR>&lt;/div&gt;&nbsp;<BR>&lt;div id=’divid’&gt;&nbsp;<BR>Just for testing;&nbsp;<BR>&lt;/div&gt;&nbsp;<BR>&lt;script&gt;&nbsp;<BR>&nbsp;var div=document.getElementById(‘divid’);&nbsp;<BR>&nbsp;alert(div.nodeName);<BR>&lt;/script&gt;&nbsp;<BR>&lt;/body&gt;&nbsp;</FONT></DIV>
<P><BR>注意使用这个函数时如果元素的ID不是唯一的，那么会获得第一个符合条件的元素。&nbsp;<BR>在IE6中如果input、checkbox,radio. 等元素name匹配指定的ID，也会被访问到&nbsp;<BR>例如下面的例子中，获得的元素是input：&nbsp;<BR>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;>&lt;body&gt;&nbsp;<BR>&nbsp;&lt;input name='divid' type="text"/&gt;&nbsp;<BR>&nbsp;&lt;div id='divid'&gt;<BR></FONT><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp; Just for testing;&nbsp;<BR></SPAN>&nbsp;&lt;/div&gt;&nbsp;<BR>&lt;script&gt;&nbsp;<BR></FONT><SPAN><FONT size=3>&nbsp;&nbsp; var div=document.getElementById('divid');&nbsp;<BR></FONT></SPAN><FONT size=3><SPAN>&nbsp;&nbsp; alert(div.nodeName);&nbsp;<BR></SPAN>&lt;/script&gt;&nbsp;<BR>&lt;/body&gt;<BR></FONT></DIV>
<P></FONT><FONT size=3><STRONG>2</STRONG><STRONG>、</STRONG></FONT><FONT size=3><STRONG>getElementsByName(name)&nbsp;<BR></STRONG>返回名字是name的元素数组，在IE6中元素ID匹配这个名字的话，这个元素也将包括在内，而且getElementsByName()仅用于象input,radio,checkbox等元素对象。&nbsp;<BR>象下面例子中georges数组的长度应该是0。&nbsp;<BR>&lt;body&gt;&nbsp;<BR>&lt;div name="george"&gt;f&lt;/div&gt;&nbsp;<BR>&lt;div name="george"&gt;f&lt;/div&gt;&nbsp;<BR>&lt;script type="text/javascript"&gt;&nbsp;<BR>var georges=document.getElementsByName("george");&nbsp;<BR>alert(georges.length);&nbsp;<BR>&lt;/script&gt;&nbsp;<BR>&lt;/body&gt;&nbsp;<BR><STRONG>3</STRONG></FONT><FONT size=3><STRONG>、getElementsByTagName(tagname)&nbsp;<BR></STRONG>getElementByTagName 可以用于DOCUMENT也可以用元素。getElementsByTagName返回具有指定tagname的子元素列表（数组）。你可以遍历这个数组获得每一个单独的子元素。当处理很大的DOM结构，使用这种方法可以很容易的所有缩小范围。&nbsp;<BR></FONT>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;><FONT size=3>&lt;html&gt;&nbsp;<BR>&lt;head&gt;&nbsp;<BR>&lt;title&gt;&lt;/title&gt;&nbsp;<BR>&lt;script&gt;&nbsp;<BR></FONT><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp; function start() {&nbsp;<BR></SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // </SPAN>获得所有tagName是body的元素（当然每个页面只有一个）&nbsp;</FONT><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myDocumentElements=document.getElementsByTagName("body");&nbsp;<BR></FONT></SPAN><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myBody=myDocumentElements.item(0);&nbsp;<BR></SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // </SPAN>获得body子元素种的所有P元素&nbsp;<BR></FONT><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myBodyElements=myBody.getElementsByTagName("p");<BR></SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // </SPAN>获得第二个P元素<BR></FONT><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myP=myBodyElements.item(1);&nbsp;<BR></SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</SPAN>显示这个元素的文本&nbsp;<BR></FONT><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(myP.firstChild.nodeValue);&nbsp;<BR></FONT></SPAN><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp; }&nbsp;<BR></SPAN>&lt;/script&gt;&nbsp;<BR>&lt;/head&gt;&nbsp;<BR>&lt;body onload="start()"&gt;&nbsp;<BR>&lt;p&gt;hi&lt;/p&gt;&nbsp;<BR>&lt;p&gt;hello&lt;/p&gt;&nbsp;<BR>&lt;/body&gt;&nbsp;<BR><SPAN>&lt;/html&gt; </SPAN></FONT></DIV>
<P><FONT size=3>&nbsp; </FONT>
<DIV><FONT size=3><STRONG><SPAN style="FONT-SIZE: 14pt">DOM Element </SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 14pt">常用方法</SPAN></STRONG></FONT><FONT size=3><STRONG><SPAN style="FONT-SIZE: 14pt">&nbsp;<BR></SPAN></STRONG><STRONG>1</STRONG></FONT><FONT size=3><STRONG>、appendChild(node)&nbsp;<BR></STRONG>向当前节点对象的追加节点。经常用于给页面动态的添加内容。</FONT></DIV>
<DIV><FONT size=3>例如下面给div添加一个文本节点：</FONT></DIV>
<DIV><FONT size=3>&lt;div id="test"&gt;&lt;/div&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script type="text/javascript"&gt;</FONT></DIV>
<DIV><FONT size=3>var newdiv=document.createElement("div")</FONT></DIV>
<DIV><FONT size=3>var newtext=document.createTextNode("A new div")</FONT></DIV>
<DIV><FONT size=3>newdiv.appendChild(newtext) </FONT></DIV>
<DIV><FONT size=3>document.getElementById("test").appendChild(newdiv) </FONT></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV>
<DIV><FONT size=3>上面的例子中给DIV添加文本，也可以用newdiv.innerHTML=”A new div”实现，</FONT></DIV>
<DIV><FONT size=3>不过innerHTML不属于DOM</FONT></DIV>
<DIV><STRONG><FONT size=3>2</FONT></STRONG><FONT size=3><STRONG>、removeChild(childreference)&nbsp;<BR></STRONG>移除当前节点的子节点，返回被移除的节点。这个被移除的节点可以被插入document树中别的地方</FONT></DIV>
<DIV><FONT size=3>&lt;div id="father"&gt;&lt;div id="child"&gt;A child&lt;/div&gt;&lt;/div&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script type="text/javascript"&gt;</FONT></DIV>
<DIV><FONT size=3>var childnode=document.getElementById("child")</FONT></DIV>
<DIV><FONT size=3>var removednode=document.getElementById("father").removeChild(childnode)</FONT></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV>
<DIV><FONT size=3><STRONG>3</STRONG><STRONG>、cloneNode(deepBoolean)</STRONG></FONT></DIV>
<DIV style="TEXT-INDENT: 15.75pt"><FONT size=3>复制并返回当前节点的复制节点，这个复制得到的节点是一个孤立的节点，不在document树中。复制原来节点的属性值，包括ID属性，所以在把这个新节点加到document之前，一定要修改ID属性，以便使它保持唯一。当然如果ID的唯一性不重要可以不做处理。</FONT></DIV>
<DIV><FONT size=3>这个方法支持一个布尔参数，当deepBoolean设置true时，复制 当前节点的所有子节点，包括该节点内的文本。</FONT></DIV>
<DIV><FONT size=3>&lt;p id=”mypara”&gt;11111&lt;/p&gt;</FONT></DIV>
<DIV><FONT size=3>p=document.getElementById("mypara")</FONT></DIV>
<DIV><FONT size=3>pclone = p.cloneNode(true);</FONT></DIV>
<DIV><FONT size=3>p.parentNode.appendChild(pclone);</FONT></DIV>
<P><SPAN><FONT size=3></FONT></SPAN></P>
<DIV><FONT size=3>&lt;div id="adiv"&gt;&lt;span id="innerspan"&gt;span&lt;/span&gt;&lt;/div&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script type="text/javascript"&gt;</FONT></DIV>
<DIV><FONT size=3>var oldel=document.getElementById("innerspan");</FONT></DIV>
<DIV><FONT size=3>var newel=document.createElement("p");</FONT></DIV>
<DIV><FONT size=3>var text=document.createTextNode(“ppppp”);</FONT></DIV>
<DIV><FONT size=3>newel.appendChild(text);</FONT></DIV>
<DIV><FONT size=3>document.getElementById("adiv").replaceChild(newel, oldel);</FONT></DIV>
<DIV><FONT size=3>&lt;/script&gt;<BR><STRONG>5</STRONG></FONT><FONT size=3><STRONG>、insertBefore(newElement, targetElement)&nbsp;<BR></STRONG><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>给当前节点插入一个新节点，如果targetElement被设置为null，那新节点被当作最后一个子节点插入，否则那新节点应该被插入targetElement之前的最近位置。</FONT></DIV>
<DIV><FONT size=3>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;>
<DIV><FONT size=3>&lt;body&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;span id="lovespan"&gt;熊掌我所欲也!&lt;/span&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;/body&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script type="text/javascript"&gt;</FONT></DIV>
<DIV><FONT size=3>var lovespan=document.getElementById("lovespan")</FONT></DIV>
<DIV><FONT size=3>var newspan=document.createElement("span")</FONT></DIV>
<DIV><FONT size=3>var newspanref=document.body.insertBefore(newspan, lovespan)</FONT></DIV>
<DIV><FONT size=3>newspanref.innerHTML="鱼与";</FONT></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV>
<P><SPAN><FONT size=3></FONT></SPAN></P>
<DIV><FONT size=3>&lt;script&gt;</FONT></DIV>
<DIV><FONT size=3>function wow() {</FONT></DIV>
<DIV><FONT size=3>&nbsp;alert("我好象没有点鼠标啊");</FONT></DIV>
<DIV><FONT size=3>}</FONT></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;div id="test" onclick='wow()'&gt;hhh&lt;/div&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script type="text/javascript"&gt;</FONT></DIV>
<DIV><FONT size=3>&nbsp;var div = document.getElementById("test");</FONT></DIV>
<DIV><FONT size=3>div.click();</FONT></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV></DIV></FONT><FONT size=3><STRONG><SPAN style="FONT-SIZE: 14pt">DOM Element</SPAN></STRONG><STRONG><SPAN style="FONT-SIZE: 14pt">的属性</SPAN></STRONG>:（下面是常用的。IE5.0以上,mozllia都支持的）</FONT></DIV>
<DIV><FONT size=3><STRONG>1</STRONG><STRONG>、childeNodes</STRONG> &nbsp;返回所有子节点对象,</FONT></DIV>
<DIV><FONT size=3>例如</FONT></DIV>
<DIV><FONT size=3>&lt;table id="mylist"&gt;</FONT></DIV>
<DIV style="TEXT-INDENT: 15.75pt"><FONT size=3>&lt;tr&gt;&lt;td&gt;一个和尚有水喝。&lt;/td&gt;&lt;/tr&gt;</FONT></DIV>
<DIV style="TEXT-INDENT: 15.75pt"><FONT size=3>&lt;tr&gt;&lt;td&gt;两个和尚挑水喝。&lt;/td&gt;&lt;/tr&gt;</FONT></DIV>
<DIV style="TEXT-INDENT: 15.75pt"><FONT size=3>&lt;tr&gt;&lt;td&gt;三个和尚没水喝。&lt;/td&gt;&lt;/tr&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;/table&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script&gt;</FONT></DIV>
<DIV><FONT size=3>var msg=””</FONT></DIV>
<DIV><FONT size=3>var mylist=document.getElementById("mylist")</FONT></DIV>
<DIV><FONT size=3>for (i=0; i&lt;mylist.childNodes.length; i++){</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp; var tr=mylist.childNodes[i];</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp; for(j=0;j&lt;tr.childNodes[j].length; j++) {</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var td=tr.childNodes[j];</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg+=td.innerText;</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp; }</FONT></SPAN></DIV>
<DIV><FONT size=3>}</FONT></DIV>
<DIV><FONT size=3>alert(msg);</FONT></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV>
<P><SPAN><FONT size=3></FONT></SPAN></P>
<DIV><FONT size=3>&nbsp;</FONT></DIV>
<DIV><STRONG><FONT size=3>2</FONT></STRONG><FONT size=3><STRONG>、innerHTML&nbsp;<BR></STRONG>这是一个事实上的标准，不属于w3c DOM，但是几乎所有支持DOM的浏览器，都支持这个属性。通过这个属性我们很容易修改一个元素的HTML。</FONT></DIV>
<DIV><FONT size=3>&lt;p&gt;&lt;b&gt;新人类，什么？！&lt;/b&gt;&lt;/p&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script type="text/javascript"&gt;</FONT></DIV>
<DIV><FONT size=3>window.onload=function(){</FONT></DIV>
<DIV><FONT size=3>document.getElementsByTagName("p")[0].innerHTML="&lt;b&gt;新新人类，什么？！&lt;/b&gt;"</FONT></DIV>
<DIV><FONT size=3>}</FONT></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV>
<DIV><STRONG><FONT size=3>3</FONT></STRONG><FONT size=3><STRONG>、style&nbsp;<BR></STRONG>返回一个元素的style对象的引用，通过它我们可以获得并修改每个单独的样式。</FONT></DIV>
<DIV><FONT size=3>例如下面的脚本可以修改一个元素的背景色</FONT></DIV>
<DIV><FONT size=3>document.getElementById("test").style.backgroundColor="yellow"</FONT></DIV>
<DIV><FONT size=3><STRONG>4</STRONG><STRONG>、firstChild</STRONG> <SPAN>&nbsp;&nbsp;&nbsp;</SPAN>返回第一个子节点<BR><STRONG>5</STRONG><STRONG>、lastChild</STRONG> <SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>返回最后一个子节点<BR><STRONG>6</STRONG><STRONG>、parentNode</STRONG> <SPAN>&nbsp;&nbsp;</SPAN>返回父节点的对象。<BR><STRONG>7</STRONG><STRONG>、nextSibling</STRONG> <SPAN>&nbsp;&nbsp;</SPAN>返回下一个兄弟节点的对象<BR><STRONG>8</STRONG><STRONG>、previousSibling</STRONG> 返回前一个兄弟节点的对象<BR><STRONG>9</STRONG><STRONG>、nodeName</STRONG> 返回节点的HTML标记名称，使用英文的大写字母，如P, FONT</FONT></DIV>
<DIV><FONT size=3>例如</FONT></DIV>
<DIV><FONT size=3>&lt;div id='test'&gt;ddd&lt;/div&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script&gt;</FONT></DIV>
<DIV><FONT size=3>if (document.getElementById("test").nodeName=="DIV")</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp; alert("This is a DIV");</FONT></SPAN></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV>
<DIV><STRONG><SPAN style="FONT-SIZE: 14pt"><FONT size=3>第一个例子：</FONT></SPAN></STRONG><FONT size=3><STRONG><SPAN style="FONT-SIZE: 14pt">&nbsp;<BR></SPAN></STRONG>使用DOM1.0<SPAN>&nbsp;&nbsp; </SPAN>的javascript动态地创建一个HTML table。</FONT></DIV>
<DIV><FONT size=3>
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;>
<DIV><FONT size=3>&lt;html&gt;&nbsp;<BR>&lt;head&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;title&gt;Sample code &lt;/title&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;script&gt;</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp; function start() {</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</SPAN>获得body的引用</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var mybody=document.getElementsByTagName("body").item(0);</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</SPAN>创建一个&lt;table&gt;&lt;/table&gt;元素</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mytable = document.createElement("TABLE");</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</SPAN>创建一个&lt;TBODY&gt;&lt;/TBODY&gt;元素</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mytablebody = document.createElement("TBODY");</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // </SPAN>创建行列</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=0;j&lt;3;j++) {</FONT></SPAN></DIV>
<DIV style="TEXT-INDENT: 63pt"><FONT size=3>//创建一个&lt;TR&gt;&lt;/TR&gt;元素</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mycurrent_row=document.createElement("TR");</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;3;i++) {</FONT></SPAN></DIV>
<DIV style="TEXT-INDENT: 63pt"><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp; //</SPAN>创建一个&lt;TD&gt;&lt;/TD&gt;元素</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mycurrent_cell=document.createElement("TD");</FONT></SPAN></DIV>
<DIV style="TEXT-INDENT: 84pt"><FONT size=3>//创建一个文本元素</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currenttext=document.createTextNode("cell is row "+j+", column "+i);</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</SPAN>把新的文本元素添加到单元TD上</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mycurrent_cell.appendChild(currenttext);</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // appends the cell TD into the row TR</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</SPAN>把单元TD添加到行TR上<BR><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mycurrent_row.appendChild(mycurrent_cell);</SPAN></FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></SPAN></DIV>
<DIV style="TEXT-INDENT: 63pt"><FONT size=3>//把行TR添加到TBODY上</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mytablebody.appendChild(mycurrent_row);</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // </SPAN>把 TBODY 添加到 TABLE</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mytable.appendChild(mytablebody);</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // </SPAN>把 TABLE 添加到 BODY</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mybody.appendChild(mytable);</FONT></SPAN></DIV>
<DIV><FONT size=3><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // </SPAN>把mytable的border 属性设置为2</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mytable.setAttribute("border","2");</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp; }</FONT></SPAN></DIV>
<DIV><FONT size=3>&lt;/script&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;/head&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;body onload="start()"&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;/body&gt;</FONT></DIV>
<DIV><FONT size=3>&lt;/html&gt;</FONT></DIV></DIV></FONT></DIV>
<P><SPAN><FONT size=3></FONT></SPAN></P>
<DIV><FONT size=3>接着，使用一个循环创建TR元素，它们应该是TBODY元素的子元素。</FONT></DIV>
<DIV><FONT size=3>对于每一个TR，我们使用一个循环创建TD元素，它们是TR的子元素。</FONT></DIV>
<DIV><FONT size=3>对于每一个TD，我们创建一个文本节点元素</FONT></DIV>
<DIV><FONT size=3>现在，我们创建好了这些TABLE, TBODY, TR, TD还有文本元素，但是它们之间的层级</FONT></DIV>
<DIV><FONT size=3>关系并没有建立起来。然后我们以上相反的顺序把每一个对象添加到它的父节点上。</FONT></DIV>
<DIV><FONT size=3>mycurrent_cell.appendChild(currenttext);</FONT></DIV>
<DIV><FONT size=3>mycurrent_row.appendChild(mycurrent_cell);</FONT></DIV>
<DIV><FONT size=3>mytablebody.appendChild(mycurrent_row);</FONT></DIV>
<DIV><FONT size=3>mytable.appendChild(mytablebody);</FONT></DIV>
<DIV><FONT size=3>现在DOM层次如下:</FONT></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BODY</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLE</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TBODY</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TR-------------------TR------------------TR</FONT></SPAN></DIV>
<DIV><SPAN><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</FONT></SPAN></DIV>
<DIV><FONT size=3>TD-----TD-----TD TD-----TD-----TD TD-----TD-----TD</FONT></DIV><FONT size=3>&nbsp; </FONT>
<P></P>
<DIV><FONT size=3>&nbsp;首先，我们创建一个table元素<BR>接着，创建一个TBODY元素，它应该是TABLE元素的子元素，<BR>但是现在现在它们之间没有联系。</FONT></DIV>
<DIV><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3>&nbsp;</FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><STRONG>6</STRONG><STRONG>、click()&nbsp;<BR></STRONG></FONT><FONT size=3>执行元素的一次点击，可以用于通过脚本来触发onClick函数</FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></DIV>
<DIV><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><FONT size=3><STRONG>4</STRONG><STRONG>、replaceChild(newChild, oldChild)&nbsp;<BR></STRONG></FONT><FONT size=3>把当前节点的一个子节点换成另一个节点<BR></FONT><FONT size=3>例如：</FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></DIV>]]></description>
</item><item>
<title><![CDATA[javascript  操作 table]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26299</link>
<author>kcruci</author>
<pubDate>2007/7/13 9:03:26</pubDate>
<description><![CDATA[<A><FONT size=5>Deleting table rows</FONT> <BR><FONT face="Courier New">
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;><FONT face="Courier New">&lt;<FONT color=#7f0055><B>html</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;head&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;type=</FONT><FONT color=#2a00ff>"text/javascript"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>deleteRow</FONT><FONT color=#000000>(</FONT><FONT color=#000000>i</FONT><FONT color=#000000>){</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>document.getElementById</FONT><FONT color=#000000>(</FONT><FONT color=#ff6100>'my</FONT><FONT color=#000000>Table</FONT><FONT color=#ff6100>').</FONT><FONT color=#000000>deleteRow</FONT><FONT color=#000000>(</FONT><FONT color=#000000>i</FONT><FONT color=#000000>)</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#000000>&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;/head&gt;</FONT><BR><BR><FONT color=#000000>&lt;</FONT><FONT color=#7f0055><B>body</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;table&nbsp;id=</FONT><FONT color=#2a00ff>"myTable"&nbsp;</FONT><FONT color=#000000>border=</FONT><FONT color=#2a00ff>"1"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row&nbsp;</FONT><FONT color=#990000>1</FONT><FONT color=#000000>&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;&lt;input&nbsp;type=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>value=</FONT><FONT color=#2a00ff>"Delete"&nbsp;</FONT><FONT color=#000000>onclick=</FONT><FONT color=#2a00ff>"deleteRow(this.parentNode.parentNode.rowIndex)"</FONT><FONT color=#000000>&gt;&lt;/td&gt;</FONT><BR><FONT color=#000000>&lt;/tr&gt;</FONT><BR><FONT color=#000000>&lt;tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row&nbsp;</FONT><FONT color=#990000>2</FONT><FONT color=#000000>&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;&lt;input&nbsp;type=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>value=</FONT><FONT color=#2a00ff>"Delete"&nbsp;</FONT><FONT color=#000000>onclick=</FONT><FONT color=#2a00ff>"deleteRow(this.parentNode.parentNode.rowIndex)"</FONT><FONT color=#000000>&gt;&lt;/td&gt;</FONT><BR><FONT color=#000000>&lt;/tr&gt;</FONT><BR><FONT color=#000000>&lt;tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row&nbsp;</FONT><FONT color=#990000>3</FONT><FONT color=#000000>&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;&lt;input&nbsp;type=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>value=</FONT><FONT color=#2a00ff>"Delete"&nbsp;</FONT><FONT color=#000000>onclick=</FONT><FONT color=#2a00ff>"deleteRow(this.parentNode.parentNode.rowIndex)"</FONT><FONT color=#000000>&gt;&lt;/td&gt;</FONT><BR><FONT color=#000000>&lt;/tr&gt;</FONT><BR><FONT color=#000000>&lt;/table&gt;</FONT><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>body</B></FONT><FONT color=#000000>&gt;</FONT><BR><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>html</B></FONT><FONT color=#000000>&gt;</FONT></FONT> </DIV></FONT><!-- end source code --><!-- =       END of automatically generated HTML code       = --><!-- ======================================================== --></A><FONT size=5>Adding table rows</FONT> <BR><BR><FONT face="Courier New">
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;><FONT face="Courier New">&lt;<FONT color=#7f0055><B>html</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;head&gt;</FONT><BR><FONT color=#000000>&lt;script&nbsp;type=</FONT><FONT color=#2a00ff>"text/javascript"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>insRow</FONT><FONT color=#000000>(){</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;x=document.getElementById</FONT><FONT color=#000000>(</FONT><FONT color=#ff6100>'my</FONT><FONT color=#000000>Table</FONT><FONT color=#ff6100>').</FONT><FONT color=#000000>insertRow</FONT><FONT color=#000000>(</FONT><FONT color=#990000>2</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;y=x.insertCell</FONT><FONT color=#000000>(</FONT><FONT color=#990000>0</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;z=x.insertCell</FONT><FONT color=#000000>(</FONT><FONT color=#990000>1</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>y.innerHTML=</FONT><FONT color=#2a00ff>"NEW&nbsp;CELL1"</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>z.innerHTML=</FONT><FONT color=#2a00ff>"NEW&nbsp;CELL2"</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#000000>&lt;/script&gt;</FONT><BR><FONT color=#000000>&lt;/head&gt;</FONT><BR><BR><FONT color=#000000>&lt;</FONT><FONT color=#7f0055><B>body</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;table&nbsp;id=</FONT><FONT color=#2a00ff>"myTable"&nbsp;</FONT><FONT color=#000000>border=</FONT><FONT color=#2a00ff>"1"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;d&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;d&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;/tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;d&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;d&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;/tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row3&nbsp;cell1&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row3&nbsp;cell2&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;/tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row4&nbsp;cell1&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row4&nbsp;cell2&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;/tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;tr&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row5&nbsp;cell1&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;td&gt;Row5&nbsp;cell2&lt;/td&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;/tr&gt;</FONT><BR><FONT color=#000000>&lt;/table&gt;</FONT><BR><FONT color=#000000>&lt;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;input&nbsp;type=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>onclick=</FONT><FONT color=#2a00ff>"insRow()"&nbsp;</FONT><FONT color=#000000>value=</FONT><FONT color=#2a00ff>"Insert&nbsp;row"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>body</B></FONT><FONT color=#000000>&gt;</FONT><BR><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>html</B></FONT><FONT color=#000000>&gt;</FONT></FONT> </DIV></FONT><BR><BR><FONT size=5>Inserting/Removing Row Elements</FONT> <BR><FONT face="Courier New">
<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;><FONT face="Courier New">&lt;<FONT color=#7f0055><B>HTML</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;HEAD&gt;</FONT><BR><FONT color=#000000>&lt;TITLE&gt;Modifying&nbsp;Table&nbsp;Cell&nbsp;Content&lt;/TITLE&gt;</FONT><BR><FONT color=#000000>&lt;STYLE&nbsp;TYPE=</FONT><FONT color=#2a00ff>"text/css"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>THEAD&nbsp;</FONT><FONT color=#000000>{</FONT><FONT color=#000000>background-color:lightyellow;&nbsp;font-weight:bold</FONT><FONT color=#000000>}</FONT><BR><FONT color=#000000>TFOOT&nbsp;</FONT><FONT color=#000000>{</FONT><FONT color=#000000>background-color:lightgreen;&nbsp;font-weight:bold</FONT><FONT color=#000000>}</FONT><BR><FONT color=#000000>#myTABLE&nbsp;</FONT><FONT color=#000000>{</FONT><FONT color=#000000>background-color:bisque</FONT><FONT color=#000000>}</FONT><BR><FONT color=#000000>&lt;/STYLE&gt;</FONT><BR><FONT color=#000000>&lt;</FONT><FONT color=#7f0055><B>SCRIPT&nbsp;</B></FONT><FONT color=#000000>LANGUAGE=</FONT><FONT color=#2a00ff>"JavaScript"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>var&nbsp;theTable,&nbsp;theTableBody</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>init</FONT><FONT color=#000000>()&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>theTable&nbsp;=&nbsp;</FONT><FONT color=#000000>(</FONT><FONT color=#000000>document.all</FONT><FONT color=#000000>)&nbsp;</FONT><FONT color=#000000>?&nbsp;document.all.myTABLE&nbsp;:&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>document.getElementById</FONT><FONT color=#000000>(</FONT><FONT color=#2a00ff>"myTABLE"</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>theTableBody&nbsp;=&nbsp;theTable.tBodies</FONT><FONT color=#000000>[</FONT><FONT color=#990000>0</FONT><FONT color=#000000>]</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>appendRow</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>insertTableRow</FONT><FONT color=#000000>(</FONT><FONT color=#000000>form,&nbsp;-</FONT><FONT color=#990000>1</FONT><FONT color=#000000>)</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>addRow</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>insertTableRow</FONT><FONT color=#000000>(</FONT><FONT color=#000000>form,&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.insertIndex.value</FONT><FONT color=#000000>)</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>insertTableRow</FONT><FONT color=#000000>(</FONT><FONT color=#000000>form,&nbsp;where</FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;now&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>new&nbsp;</B></FONT><FONT color=#000000>Date</FONT><FONT color=#000000>()</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;nowData&nbsp;=&nbsp;</FONT><FONT color=#000000>[</FONT><FONT color=#000000>now.getHours</FONT><FONT color=#000000>()</FONT><FONT color=#000000>,&nbsp;now.getMinutes</FONT><FONT color=#000000>()</FONT><FONT color=#000000>,&nbsp;now.getSeconds</FONT><FONT color=#000000>()</FONT><FONT color=#000000>,&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>now.getMilliseconds</FONT><FONT color=#000000>()]</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>clearBGColors</FONT><FONT color=#000000>()</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newCell</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newRow&nbsp;=&nbsp;theTableBody.insertRow</FONT><FONT color=#000000>(</FONT><FONT color=#000000>where</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>for&nbsp;</B></FONT><FONT color=#000000>(</FONT><FONT color=#000000>var&nbsp;i&nbsp;=&nbsp;</FONT><FONT color=#990000>0</FONT><FONT color=#000000>;&nbsp;i&nbsp;&lt;&nbsp;nowData.length;&nbsp;i++</FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newCell&nbsp;=&nbsp;newRow.insertCell</FONT><FONT color=#000000>(</FONT><FONT color=#000000>i</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newCell.innerHTML&nbsp;=&nbsp;nowData</FONT><FONT color=#000000>[</FONT><FONT color=#000000>i</FONT><FONT color=#000000>]</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newCell.style.backgroundColor&nbsp;=&nbsp;</FONT><FONT color=#2a00ff>"salmon"</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>}</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>updateRowCounters</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>removeRow</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>theTableBody.deleteRow</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.deleteIndex.value</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>updateRowCounters</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>insertTHEAD</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;THEADData&nbsp;=&nbsp;</FONT><FONT color=#000000>[</FONT><FONT color=#2a00ff>"Hours"</FONT><FONT color=#000000>,</FONT><FONT color=#2a00ff>"Minutes"</FONT><FONT color=#000000>,</FONT><FONT color=#2a00ff>"Seconds"</FONT><FONT color=#000000>,</FONT><FONT color=#2a00ff>"Milliseconds"</FONT><FONT color=#000000>]</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newCell</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newTHEAD&nbsp;=&nbsp;theTable.createTHead</FONT><FONT color=#000000>()</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newTHEAD.id&nbsp;=&nbsp;</FONT><FONT color=#2a00ff>"myTHEAD"</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newRow&nbsp;=&nbsp;newTHEAD.insertRow</FONT><FONT color=#000000>(</FONT><FONT color=#000000>-</FONT><FONT color=#990000>1</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>for&nbsp;</B></FONT><FONT color=#000000>(</FONT><FONT color=#000000>var&nbsp;i&nbsp;=&nbsp;</FONT><FONT color=#990000>0</FONT><FONT color=#000000>;&nbsp;i&nbsp;&lt;&nbsp;THEADData.length;&nbsp;i++</FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newCell&nbsp;=&nbsp;newRow.insertCell</FONT><FONT color=#000000>(</FONT><FONT color=#000000>i</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newCell.innerHTML&nbsp;=&nbsp;THEADData</FONT><FONT color=#000000>[</FONT><FONT color=#000000>i</FONT><FONT color=#000000>]</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>}</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>updateRowCounters</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.addTHEAD.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>true</B></FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.deleteTHEAD.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>false</B></FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>removeTHEAD</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>theTable.deleteTHead</FONT><FONT color=#000000>()&nbsp;&nbsp;&nbsp;&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>updateRowCounters</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.addTHEAD.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>false</B></FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.deleteTHEAD.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>true</B></FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>insertTFOOT</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;TFOOTData&nbsp;=&nbsp;</FONT><FONT color=#000000>[</FONT><FONT color=#2a00ff>"Hours"</FONT><FONT color=#000000>,</FONT><FONT color=#2a00ff>"Minutes"</FONT><FONT color=#000000>,</FONT><FONT color=#2a00ff>"Seconds"</FONT><FONT color=#000000>,</FONT><FONT color=#2a00ff>"Milliseconds"</FONT><FONT color=#000000>]</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newCell</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newTFOOT&nbsp;=&nbsp;theTable.createTFoot</FONT><FONT color=#000000>()</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newTFOOT.id&nbsp;=&nbsp;</FONT><FONT color=#2a00ff>"myTFOOT"</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newRow&nbsp;=&nbsp;newTFOOT.insertRow</FONT><FONT color=#000000>(</FONT><FONT color=#000000>-</FONT><FONT color=#990000>1</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>for&nbsp;</B></FONT><FONT color=#000000>(</FONT><FONT color=#000000>var&nbsp;i&nbsp;=&nbsp;</FONT><FONT color=#990000>0</FONT><FONT color=#000000>;&nbsp;i&nbsp;&lt;&nbsp;TFOOTData.length;&nbsp;i++</FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newCell&nbsp;=&nbsp;newRow.insertCell</FONT><FONT color=#000000>(</FONT><FONT color=#000000>i</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newCell.innerHTML&nbsp;=&nbsp;TFOOTData</FONT><FONT color=#000000>[</FONT><FONT color=#000000>i</FONT><FONT color=#000000>]</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>}</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>updateRowCounters</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.addTFOOT.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>true</B></FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.deleteTFOOT.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>false</B></FONT><BR><FONT color=#000000>}</FONT><BR><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>removeTFOOT</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>theTable.deleteTFoot</FONT><FONT color=#000000>()&nbsp;&nbsp;&nbsp;&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>updateRowCounters</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.addTFOOT.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>false</B></FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.deleteTFOOT.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>true</B></FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>insertCaption</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;captionData&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.captionText.value</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;newCaption&nbsp;=&nbsp;theTable.createCaption</FONT><FONT color=#000000>()</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>newCaption.innerHTML&nbsp;=&nbsp;captionData</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.addCaption.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>true</B></FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.deleteCaption.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>false</B></FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>removeCaption</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>theTable.deleteCaption</FONT><FONT color=#000000>()&nbsp;&nbsp;&nbsp;&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.addCaption.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>false</B></FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.deleteCaption.disabled&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>true</B></FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#3f7f5f>//&nbsp;housekeeping&nbsp;functions</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>updateRowCounters</FONT><FONT color=#000000>(</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;sel1&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.insertIndex</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>var&nbsp;sel2&nbsp;=&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.deleteIndex</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>sel1.options.length&nbsp;=&nbsp;</FONT><FONT color=#990000>0</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>sel2.options.length&nbsp;=&nbsp;</FONT><FONT color=#990000>0</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>for&nbsp;</B></FONT><FONT color=#000000>(</FONT><FONT color=#000000>var&nbsp;i&nbsp;=&nbsp;</FONT><FONT color=#990000>0</FONT><FONT color=#000000>;&nbsp;i&nbsp;&lt;&nbsp;theTableBody.rows.length;&nbsp;i++</FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>sel1.options</FONT><FONT color=#000000>[</FONT><FONT color=#000000>i</FONT><FONT color=#000000>]&nbsp;</FONT><FONT color=#000000>=&nbsp;</FONT><FONT color=#7f0055><B>new&nbsp;</B></FONT><FONT color=#000000>Option</FONT><FONT color=#000000>(</FONT><FONT color=#000000>i,&nbsp;i</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>sel2.options</FONT><FONT color=#000000>[</FONT><FONT color=#000000>i</FONT><FONT color=#000000>]&nbsp;</FONT><FONT color=#000000>=&nbsp;</FONT><FONT color=#7f0055><B>new&nbsp;</B></FONT><FONT color=#000000>Option</FONT><FONT color=#000000>(</FONT><FONT color=#000000>i,&nbsp;i</FONT><FONT color=#000000>)</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>}</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>form</B></FONT><FONT color=#000000>.removeRowBtn.disabled&nbsp;=&nbsp;</FONT><FONT color=#000000>(</FONT><FONT color=#000000>i==</FONT><FONT color=#990000>0</FONT><FONT color=#000000>)</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#7f0055><B>function&nbsp;</B></FONT><FONT color=#000000>clearBGColors</FONT><FONT color=#000000>()&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>for&nbsp;</B></FONT><FONT color=#000000>(</FONT><FONT color=#000000>var&nbsp;i&nbsp;=&nbsp;</FONT><FONT color=#990000>0</FONT><FONT color=#000000>;&nbsp;i&nbsp;&lt;&nbsp;theTableBody.rows.length;&nbsp;i++</FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#7f0055><B>for&nbsp;</B></FONT><FONT color=#000000>(</FONT><FONT color=#000000>var&nbsp;j&nbsp;=&nbsp;</FONT><FONT color=#990000>0</FONT><FONT color=#000000>;&nbsp;j&nbsp;&lt;&nbsp;theTableBody.rows</FONT><FONT color=#000000>[</FONT><FONT color=#000000>i</FONT><FONT color=#000000>]</FONT><FONT color=#000000>.cells.length;&nbsp;j++</FONT><FONT color=#000000>)&nbsp;{</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>theTableBody.rows</FONT><FONT color=#000000>[</FONT><FONT color=#000000>i</FONT><FONT color=#000000>]</FONT><FONT color=#000000>.cells</FONT><FONT color=#000000>[</FONT><FONT color=#000000>j</FONT><FONT color=#000000>]</FONT><FONT color=#000000>.style.backgroundColor&nbsp;=&nbsp;</FONT><FONT color=#2a00ff>""&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>}</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>}</FONT><BR><FONT color=#000000>}</FONT><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>SCRIPT</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;/HEAD&gt;</FONT><BR><FONT color=#000000>&lt;</FONT><FONT color=#7f0055><B>BODY&nbsp;</B></FONT><FONT color=#000000>onLoad=</FONT><FONT color=#2a00ff>"init()"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;H1&gt;Modifying&nbsp;Tables&lt;/H1&gt;</FONT><BR><FONT color=#000000>&lt;HR&gt;</FONT><BR><FONT color=#000000>&lt;FORM&nbsp;NAME=</FONT><FONT color=#2a00ff>"controls"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;FIELDSET&gt;</FONT><BR><FONT color=#000000>&lt;LEGEND&gt;Add/Remove&nbsp;Rows&lt;/LEGEND&gt;</FONT><BR><FONT color=#000000>&lt;TABLE&nbsp;WIDTH=</FONT><FONT color=#2a00ff>"100%"&nbsp;</FONT><FONT color=#000000>CELLSPACING=</FONT><FONT color=#990000>20</FONT><FONT color=#000000>&gt;&lt;TR&gt;</FONT><BR><FONT color=#000000>&lt;TD&gt;&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Append&nbsp;1&nbsp;Row"&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"appendRow(this.form)"</FONT><FONT color=#000000>&gt;&lt;/TD&gt;</FONT><BR><FONT color=#000000>&lt;TD&gt;&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Insert&nbsp;1&nbsp;Row"&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"addRow(this.form)"</FONT><FONT color=#000000>&gt;&nbsp;at&nbsp;index:&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;SELECT&nbsp;NAME=</FONT><FONT color=#2a00ff>"insertIndex"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;OPTION&nbsp;VALUE=</FONT><FONT color=#2a00ff>"0"</FONT><FONT color=#000000>&gt;</FONT><FONT color=#990000>0</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;/SELECT&gt;&lt;/TD&gt;</FONT><BR><FONT color=#000000>&lt;TD&gt;&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>NAME=</FONT><FONT color=#2a00ff>"removeRowBtn"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Delete&nbsp;1&nbsp;Row"&nbsp;</FONT><FONT color=#000000>DISABLED&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"removeRow(this.form)"</FONT><FONT color=#000000>&gt;&nbsp;at&nbsp;index:&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;SELECT&nbsp;NAME=</FONT><FONT color=#2a00ff>"deleteIndex"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;OPTION&nbsp;VALUE=</FONT><FONT color=#2a00ff>"0"</FONT><FONT color=#000000>&gt;</FONT><FONT color=#990000>0</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;/SELECT&gt;&lt;/TD&gt;</FONT><BR><FONT color=#000000>&lt;/TR&gt;</FONT><BR><FONT color=#000000>&lt;/TABLE&gt;</FONT><BR><FONT color=#000000>&lt;/FIELDSET&gt;</FONT><BR><FONT color=#000000>&lt;FIELDSET&gt;</FONT><BR><FONT color=#000000>&lt;LEGEND&gt;Add/Remove&nbsp;THEAD&nbsp;and&nbsp;TFOOT&lt;/LEGEND&gt;</FONT><BR><FONT color=#000000>&lt;TABLE&nbsp;WIDTH=</FONT><FONT color=#2a00ff>"100%"&nbsp;</FONT><FONT color=#000000>CELLSPACING=</FONT><FONT color=#990000>20</FONT><FONT color=#000000>&gt;&lt;TR&gt;</FONT><BR><FONT color=#000000>&lt;TD&gt;&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>NAME=</FONT><FONT color=#2a00ff>"addTHEAD"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Insert&nbsp;THEAD"&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"insertTHEAD(this.form)"</FONT><FONT color=#000000>&gt;&lt;BR&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>NAME=</FONT><FONT color=#2a00ff>"deleteTHEAD"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Remove&nbsp;THEAD"&nbsp;</FONT><FONT color=#000000>DISABLED&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"removeTHEAD(this.form)"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;/TD&gt;</FONT><BR><FONT color=#000000>&lt;TD&gt;&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>NAME=</FONT><FONT color=#2a00ff>"addTFOOT"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Insert&nbsp;TFOOT"&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"insertTFOOT(this.form)"</FONT><FONT color=#000000>&gt;&lt;BR&gt;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>NAME=</FONT><FONT color=#2a00ff>"deleteTFOOT"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Remove&nbsp;TFOOT"&nbsp;</FONT><FONT color=#000000>DISABLED&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"removeTFOOT(this.form)"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;/TD&gt;</FONT><BR><FONT color=#000000>&lt;/TR&gt;</FONT><BR><FONT color=#000000>&lt;/TABLE&gt;</FONT><BR><FONT color=#000000>&lt;/FIELDSET&gt;</FONT><BR><FONT color=#000000>&lt;FIELDSET&gt;</FONT><BR><FONT color=#000000>&lt;LEGEND&gt;Add/Remove&nbsp;Caption&lt;/LEGEND&gt;</FONT><BR><FONT color=#000000>&lt;TABLE&nbsp;WIDTH=</FONT><FONT color=#2a00ff>"100%"&nbsp;</FONT><FONT color=#000000>CELLSPACING=</FONT><FONT color=#990000>20</FONT><FONT color=#000000>&gt;&lt;TR&gt;</FONT><BR><FONT color=#000000>&lt;TD&gt;&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>NAME=</FONT><FONT color=#2a00ff>"addCaption"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Add&nbsp;Caption"&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"insertCaption(this.form)"</FONT><FONT color=#000000>&gt;&lt;/TD&gt;</FONT><BR><FONT color=#000000>&lt;TD&gt;Text:&nbsp;&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"text"&nbsp;</FONT><FONT color=#000000>NAME=</FONT><FONT color=#2a00ff>"captionText"&nbsp;</FONT><FONT color=#000000>SIZE=</FONT><FONT color=#990000>40&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Sample&nbsp;Caption"</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;TD&gt;&lt;INPUT&nbsp;TYPE=</FONT><FONT color=#2a00ff>"button"&nbsp;</FONT><FONT color=#000000>NAME=</FONT><FONT color=#2a00ff>"deleteCaption"&nbsp;</FONT><FONT color=#000000>VALUE=</FONT><FONT color=#2a00ff>"Delete&nbsp;Caption"&nbsp;</FONT><FONT color=#000000>DISABLED&nbsp;</FONT><BR><FONT color=#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000000>onClick=</FONT><FONT color=#2a00ff>"removeCaption(this.form)"</FONT><FONT color=#000000>&gt;&lt;/TD&gt;</FONT><BR><FONT color=#000000>&lt;/TR&gt;</FONT><BR><FONT color=#000000>&lt;/TABLE&gt;</FONT><BR><FONT color=#000000>&lt;/FIELDSET&gt;</FONT><BR><FONT color=#000000>&lt;/FORM&gt;</FONT><BR><FONT color=#000000>&lt;HR&gt;</FONT><BR><FONT color=#000000>&lt;TABLE&nbsp;ID=</FONT><FONT color=#2a00ff>"myTABLE"&nbsp;</FONT><FONT color=#000000>CELLPADDING=</FONT><FONT color=#990000>10&nbsp;</FONT><FONT color=#000000>BORDER=</FONT><FONT color=#990000>1</FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;TBODY&gt;</FONT><BR><FONT color=#000000>&lt;/TABLE&gt;</FONT><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>BODY</B></FONT><FONT color=#000000>&gt;</FONT><BR><FONT color=#000000>&lt;/</FONT><FONT color=#7f0055><B>HTML</B></FONT><FONT color=#000000>&gt;</FONT></FONT></DIV></FONT>]]></description>
</item><item>
<title><![CDATA[WEB软件结构原则]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26292</link>
<author>kcruci</author>
<pubDate>2007/7/12 21:06:18</pubDate>
<description><![CDATA[
<DIV style="FLOAT: right" align=right><A title="评分 0" href="http://www.heaven-online.cn/misc.php?action=viewratings&amp;tid=280&amp;pid=474"></A></DIV><SPAN class=bold>WEB软件结构原则</SPAN><BR><BR>
<DIV class=t_msgfont id=message474>一、 目录结构清楚，不宜过深，复杂，路径最好用相对地址 <BR>二、 命名适当 <BR>三、 常变内容、界面使模板较好 <BR>四、 共公信息统一存储 <BR>五、 Include文件不可嵌入较多 <BR>六、 目录下不可存储太多内容文件 <BR>七、 数据结构要设计合理 <BR>八、 数据校验应在服务器端 <BR>九、 连接数据库近晚，断开连接近早 <BR>十、 尽量少使用SESSION与COOKIE <BR><BR>详细说明： <BR><BR>(一) 目录结构清楚，不宜过深，复杂，路径最好用相对地址 <BR>a) 什么样的目录放什么样的内容，这样便于管理，使WEB程序的目录结构，清楚明了，一看便知道某个文件夹下存储了哪些功能模块与内容。若随便存放，时间一长久自己都将不从了解某目录是用来做什么的。如：经常要使用的可执行文件最要存放在（项目根目录）根目录，这样做主要是便于了解其作用，同时也为在程序中少输入些地址字符。程序所用到的图片统一存放在根目录下images目录中，若项目较大，分枝较多，可再在其目录下建立也分枝程序相关的目录名，存储相关的图片内容。程序的配置文件与常用共公函数类库存放在include目录中，存放在此目录下的函数类库文件扩展名得命名为：.php切不命名为.inc .ini之类为扩展名的文件，主要是防此此类文件可供用户下载，或查阅其源码内容，这样对其调用方便明确。模板文件应存储在根目录下templates目录中，扩展名为.html，如果项目较大，分类较多，模板文件可分类存放在下极目录中。临时文件存储在根目录tmp目录中，此目录通常设置为任何人都可读可写。使用相对地址主要是方便程序移植。<BR><BR>(二) 命名适当 <BR>a) 命名最好是以程序用来作什么用来命名。若一个单词就要描述则用小写单词来命名，若要用多个单词方能代表，也以小写单词之间加下划线连接。要注意命名不可过长，这样就不方便了，虽然能表达的更明确，但打字难打啊。程序中函数命名也可与此相同。不好之上也有，那就是每次命名都得要花时间去想个较合适的名字，由其是对于是我们这种英文水评较差的人来说可不是一件容易的事啊。（惨啊，哈哈！） <BR><BR>(三) 常变内容、界面使模板较好 <BR>a) 常变内容、界面使用模板较好，这是因为当我某天感觉某不页面不美观时尚时，我想更换较新较好的界面，这时就用得上了。如果是按照传统的制作将HTML页面内容放在程序中处理输入时，较麻烦非得要更改程序不可，这可能会带来较大的不便万一更改出错，这就不太好了。（程序有很长一段时没有维护了，突然要改，一时之间是难免不发生改错的情况发生）。若是使用了模板则不用改程序，只要更改一下模板文件就行了。好了说了这么我模板的好处，好像传统的做法没有一点好处是的，好像分文不值是的，也不是，模板也有它不好的地方，现在我也来说说它是怎么个不好的。传统做法是把HTML代码嵌入在WEB程序中，这样做的好处是，执行速度要比使用模板的要快，这是因为它不用经过任何处理就能直接输出，而模板就不一样啦。模板先要打开读取模板文件到字符串变量可数组字符串变量中，这是要时间的吧？读处完了之后还得花时间用字符串操作函数替换模板中模板变量吧？替换完成了方能进入输出。传统做法与使用模板作法，您觉得哪个好呢？（我个人认为如果是开发访问量相当大的网站，选择传统的作法是一个不错的选择，我所说的是相对不是绝对，如果访问量再大那就不能用脚本语言去写了，那得用CGI + Socket + Demon了。不说了，说远了，哈哈） <BR><BR>(四) 共公信息统一存储 <BR>a) 共公信息统一存储，这主要为了方便团队开发时都能进行调用用的最常的函数，不用每个开发人员都复制一份或自己写一份存储在程序文件中，这样做浪费空间同时效率效果也不好。 <BR><BR>(五) Include文件不可嵌入较多 <BR>a) Include文件不可嵌入较多，这是因为每次程序include某个文件时，是要打开读取这个文件的，这是要时间的哦，再就是说处理路径时可能会遇到较难发现的BUG问题。 <BR><BR>(六) 目录下不可存储太多内容文件 <BR>a) 目录下不可存储太多内容文件，你有没有发现？每当你进入windows的system32文件夹时通常打开的时间要比打开其它文件夹时要长久点呢？这主要是因为system32这个文件夹中文件较多，当你打开系统得花时间查找文件并显示吧？如果文件较多较大时最好是分目录分盘符来处理。假若您的机器够好够强劲的话，就当我没说过，那就得另当别论了。 <BR><BR>(七) 数据结构要设计合理 <BR>a) 数据结构要设计合理，如果数据结构设计不合理的话，不管你的程序写的多精典，写得我容易，也不是不能发挥其最大作用与价值的。这就相当于一个女人的胸部最大最丰满，但人不够高，而且又黑，身体又不好，身架又残疾，你会说她美丽完美吗？程序也一样，有些代码沉长又不起作用，存在也没有什么用。数据结构要精简明了。 <BR><BR>(八) 数据校验应在服务器端<BR><BR>a) 数据校验应在服务器端，这是因为就算是他人不从我们的页面输入数据，自己做了个链接地址(GET)或自己做了个表单用POST方式传送数据，我们的程序也将进入核对查验。若是放在客户端，他人就能用以上方法逃过审核了。但这样做也有他不好之处，那就是当数据量大时，服务器会负载运行，审核数据完整性是可开销时间与系统资源的。在客户端就不会占用服务器太多的资源，因为他占用的是用户的资源。 <BR><BR>(九) 连接数据库近晚，断开连接近早 <BR>a) 连接数据库近晚，断开连接近早，这主要是因为连接数据是要时间的吧？连接上了不即时使用也要占用系统资源吧？连接数据库连接数量是有限制的吧？所以得尽晚连接，尽早断开连接，这个做能使占用系统资源最少，为下一次连接提供条件。 <BR><BR>(十) 尽量少使用SESSION与COOKIE <BR>a) 尽量少使用SESSION与COOKIE，因为使用SESSION是要占用系统资源的，SESSION是存储在服务器端的，每次读取SESSION中的数据是要较大开销的。COOKIE虽然不占用服务器资源，但COOKIE不太安全。</DIV>]]></description>
</item><item>
<title><![CDATA[DIV  + css 实践1]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26283</link>
<author>kcruci</author>
<pubDate>2007/7/12 17:20:56</pubDate>
<description><![CDATA[<DIV class=HtmlCode title=点击运行该代码！ style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;>
<P>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<A href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</A>"&gt;<BR>&lt;html xmlns="<A href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</A>"&gt;<BR>&lt;!-- DW6 --&gt;<BR>&lt;head&gt;<BR>&lt;!-- Copyright 2005 Macromedia, Inc. All rights reserved. --&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<BR>&lt;title&gt;Untitled Document&lt;/title&gt;</P>
<P>&lt;style type="text/css"&gt;</P>
<P>body{<BR>&nbsp;font-family: Arial, sans-serif;<BR>&nbsp;color: #ECE9D8;<BR>&nbsp;line-height: 1.6;&nbsp;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>}<BR>&nbsp;<BR>#topMailList {<BR>&nbsp;FONT-SIZE: 93%;<BR>&nbsp;FLOAT: left;<BR>&nbsp;WIDTH: 100%;<BR>&nbsp;LINE-HEIGHT: normal;<BR>&nbsp;background-color: #FFFFFF;<BR>}<BR>#topMailList UL {<BR>&nbsp;PADDING-RIGHT: 10px;<BR>&nbsp;PADDING-LEFT: 50px;<BR>&nbsp;PADDING-BOTTOM: 0px;<BR>&nbsp;MARGIN: 0px;<BR>&nbsp;PADDING-TOP: 10px;<BR>&nbsp;LIST-STYLE-TYPE: none<BR>&nbsp;FLOAT: left; <BR>&nbsp;position: fixed;<BR>&nbsp;height: auto;<BR>&nbsp;width: auto;<BR>}</P>
<P>#topMailList LI {<BR>&nbsp;PADDING-RIGHT: 0px;<BR>&nbsp;DISPLAY: inline;<BR>&nbsp;PADDING-LEFT: 0px;<BR>&nbsp;PADDING-BOTTOM: 0px;<BR>&nbsp;MARGIN: 0px;<BR>&nbsp;PADDING-TOP: 0px;<BR>&nbsp;height: 1.6px;<BR>&nbsp;width: 100px;<BR>&nbsp;color: #0000FF;<BR>&nbsp;z-index: auto;<BR>}</P>
<P>#topMailList INPUT{<BR>&nbsp;FLOAT: left;<BR>&nbsp;}</P>
<P>#topMailList A {<BR>&nbsp;PADDING-RIGHT: 0px;<BR>&nbsp;PADDING-LEFT: 4px;<BR>&nbsp;BACKGROUND: url(images/tableft.gif) no-repeat left top;<BR>&nbsp;FLOAT: left;<BR>&nbsp;PADDING-BOTTOM: 0px;<BR>&nbsp;MARGIN: 0px;<BR>&nbsp;PADDING-TOP: 0px;<BR>&nbsp;TEXT-DECORATION: none;<BR>&nbsp;position: inherit;<BR>&nbsp;width: 30%;<BR>&nbsp;white-space: nowrap;<BR>&nbsp;overflow: hidden;<BR>}</P>
<P>#topMailList li span A{<BR>&nbsp;PADDING-RIGHT: 0px;<BR>&nbsp;DISPLAY: inline;<BR>&nbsp;PADDING-LEFT: 0px;<BR>&nbsp;PADDING-BOTTOM: 0px;<BR>&nbsp;MARGIN: 0px;<BR>&nbsp;PADDING-TOP: 0px;<BR>&nbsp;height: 1.6px;<BR>&nbsp;width: 100px;<BR>&nbsp;color: #0000FF;<BR>&nbsp;z-index: auto;</P>
<P>}</P>
<P>&nbsp;/* 邮件条目 */</P>
<P>.mailItem {<BR>&nbsp;FONT-SIZE: 93%;<BR>&nbsp;FLOAT: left;<BR>&nbsp;WIDTH: 100%;<BR>&nbsp;LINE-HEIGHT: normal;<BR>&nbsp;background-color: #FFFFFF;<BR>}<BR>.mailItem UL {<BR>&nbsp;PADDING-RIGHT: 10px;<BR>&nbsp;PADDING-LEFT: 50px;<BR>&nbsp;PADDING-BOTTOM: 0px;<BR>&nbsp;MARGIN: 0px;<BR>&nbsp;PADDING-TOP: 10px;<BR>&nbsp;LIST-STYLE-TYPE: none<BR>&nbsp;FLOAT: left; <BR>&nbsp;position: fixed;<BR>&nbsp;height: auto;<BR>&nbsp;width: auto;<BR>}</P>
<P>.mailItem LI {<BR>&nbsp;PADDING-RIGHT: 0px;<BR>&nbsp;DISPLAY: inline;<BR>&nbsp;PADDING-LEFT: 0px;<BR>&nbsp;PADDING-BOTTOM: 0px;<BR>&nbsp;MARGIN: 0px;<BR>&nbsp;PADDING-TOP: 0px;<BR>&nbsp;height: 1.6px;<BR>&nbsp;width: 100px;<BR>&nbsp;color: #0000FF;<BR>&nbsp;z-index: auto;<BR>}</P>
<P>.mailItem INPUT{<BR>&nbsp;FLOAT: left;<BR>&nbsp;}</P>
<P>.mailItem A {<BR>&nbsp;PADDING-RIGHT: 0px;<BR>&nbsp;PADDING-LEFT: 4px;<BR>&nbsp;BACKGROUND: url(images/tableft.gif) no-repeat left top;<BR>&nbsp;FLOAT: left;<BR>&nbsp;PADDING-BOTTOM: 0px;<BR>&nbsp;MARGIN: 0px;<BR>&nbsp;PADDING-TOP: 0px;<BR>&nbsp;TEXT-DECORATION: none;<BR>&nbsp;position: inherit;<BR>&nbsp;width: 30%;<BR>&nbsp;white-space: nowrap;<BR>&nbsp;overflow: hidden;<BR>}<BR>/* 邮件列表 */<BR>#mailItems{<BR>&nbsp;float: left;<BR>&nbsp;width: auto;<BR>&nbsp;height: 256px;<BR>&nbsp;overflow-y:scroll;<BR>&nbsp;margin: 0&nbsp; 2 0 0 ;<BR>}</P>
<P>#mailDetail{<BR>&nbsp;float: left;<BR>&nbsp;width: 100%;<BR>&nbsp;height: 422px;<BR>&nbsp;overflow-y:scroll;<BR>&nbsp;color: #990000;<BR>&nbsp;font-family: "宋体";<BR>&nbsp;margin: 2 0 0 0;<BR>&nbsp;text-align: left;<BR>}<BR>#right{<BR>&nbsp;width:80%;<BR>&nbsp;float: left;<BR>&nbsp;height: auto; <BR>&nbsp;margin:0 auto;<BR>&nbsp;position:absolute; <BR>&nbsp; <BR>}</P>
<P>a{<BR>&nbsp;color: #006699;<BR>&nbsp;text-decoration: none;<BR>}</P>
<P>a:link{<BR>&nbsp;color: #006699;<BR>&nbsp;text-decoration: none;<BR>}</P>
<P>a:visited{<BR>&nbsp;color: #006699;<BR>&nbsp;text-decoration: none;<BR>}</P>
<P>a:hover{<BR>&nbsp;color: #FF0000;<BR>&nbsp;text-decoration: underline;<BR>}</P>
<P>h1{<BR>&nbsp;font-family: Verdana,Arial,sans-serif;<BR>&nbsp;font-size: 120%;<BR>&nbsp;color: #334d55;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>}</P>
<P>h2{<BR>&nbsp;font-family: Arial,sans-serif;<BR>&nbsp;font-size: 114%;<BR>&nbsp;color: #006699;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>}</P>
<P>h3{<BR>&nbsp;font-family: Arial,sans-serif;<BR>&nbsp;font-size: 100%;<BR>&nbsp;color: #334d55;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>}</P>
<P>h4{<BR>&nbsp;font-family: Arial,sans-serif;<BR>&nbsp;font-size: 100%;<BR>&nbsp;font-weight: normal;<BR>&nbsp;color: #333333;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>}</P>
<P>h5{<BR>&nbsp;font-family: Verdana,Arial,sans-serif;<BR>&nbsp;font-size: 100%;<BR>&nbsp;color: #334d55;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>}</P>
<P>ul{<BR>}</P>
<P>ul ul{<BR>&nbsp;list-style-type: disc;<BR>}</P>
<P>ul ul ul{<BR>&nbsp;list-style-type: none;<BR>}</P>
<P>label{<BR>&nbsp;font-family: Arial,sans-serif;<BR>&nbsp;font-size: 100%;<BR>&nbsp;font-weight: bold;<BR>&nbsp;color: #334d55;<BR>}</P>
<P><BR>/***********************************************/<BR>/* Layout Divs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>/***********************************************/</P>
<P>#masthead{<BR>&nbsp;padding: 10px 0px 0px 0px;<BR>&nbsp;border-bottom: 1px solid #cccccc;<BR>&nbsp;width: 100%;<BR>}</P>
<P>#navBar{<BR>&nbsp;float: left;<BR>&nbsp;width: 200px;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>&nbsp;background-color: #eeeeee;<BR>&nbsp;border-right: 1px solid #cccccc;<BR>&nbsp;&nbsp;&nbsp; bottom: 1px solid #cccccc;<BR>&nbsp;height: 80%;<BR>}</P>
<P>#headlines{<BR>&nbsp; float:right;<BR>&nbsp;width: 20%;<BR>&nbsp;border-left: 1px solid #cccccc;<BR>&nbsp;border-bottom: 1px solid #cccccc;<BR>&nbsp;padding-right: 10px;<BR>}</P>
<P>#content{<BR>&nbsp;float: left;<BR>&nbsp;width: auto;<BR>&nbsp;height: 250px;<BR>&nbsp;overflow-y:scroll<BR>}</P>
<P>/***********************************************/<BR>/* Components&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>/***********************************************/</P>
<P>#siteName{<BR>&nbsp;margin: 0;<BR>&nbsp;padding: 0 0 0 10px;<BR>&nbsp;height: 10%;<BR>}</P>
<P><BR>/************* #globalNav styles **************/</P>
<P>#globalNav{<BR>padding: 0px 0px 5px 10px;<BR>border-bottom: 1px solid #CCC;<BR>color: #cccccc;<BR>}</P>
<P>#globalNav img{<BR>&nbsp;display: block;<BR>}</P>
<P>#globalNav a {<BR>&nbsp;font-size: 90%;<BR>&nbsp;padding: 0 4px 0 0;<BR>}</P>
<P>/*************** #pageName styles **************/</P>
<P>#pageName{<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px 0px 0px 10px;<BR>}</P>
<P>/************* #breadCrumb styles *************/</P>
<P>#breadCrumb{<BR>&nbsp;font-size: 80%;<BR>&nbsp;padding: 2px 0px 0 10px;<BR>}</P>
<P><BR>/************** .feature styles ***************/</P>
<P>.feature{<BR>&nbsp;padding: 0px 0px 10px 10px;<BR>&nbsp;font-size: 80%;<BR>&nbsp;height: 100px;<BR>}</P>
<P>.feature h3{<BR>&nbsp;padding: 30px 0px 5px 0px;<BR>&nbsp;text-align: center;<BR>}</P>
<P>.feature img{<BR>&nbsp;float: left;<BR>&nbsp;padding: 10px 10px 0px 0px;<BR>}</P>
<P><BR>/************** .story styles *****************/</P>
<P>.story{<BR>&nbsp;clear: both;<BR>&nbsp;padding: 10px 0px 0px 10px;<BR>&nbsp;font-size: 80%;<BR>}</P>
<P>.story p{<BR>&nbsp;padding: 0px 0px 10px 0px;<BR>}</P>
<P><BR>/************* #siteInfo styles ***************/</P>
<P>#siteInfo{<BR>&nbsp;clear: both;<BR>&nbsp;border: 1px solid #cccccc;<BR>&nbsp;font-size: 75%;<BR>&nbsp;color: #cccccc;<BR>&nbsp;padding: 10px 10px 10px 10px;<BR>&nbsp;position:absolute;<BR>&nbsp;bottom:0;<BR>&nbsp;width: 100%;<BR>}</P>
<P>#siteInfo img{<BR>&nbsp;padding: 4px 4px 4px 10px;<BR>&nbsp;vertical-align: middle;<BR>}</P>
<P><BR>/************* #search styles ***************/</P>
<P>#search{<BR>&nbsp;padding: 5px 0px 5px 10px;<BR>&nbsp;border-bottom: 1px solid #cccccc;<BR>&nbsp;font-size: 90%;<BR>}</P>
<P>#search form{<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>}</P>
<P>#search label{<BR>&nbsp;display: block;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>}</P>
<P><BR>/*********** #navBar link styles ***********/</P>
<P>#navBar ul a:link, #navBar ul a:visited {display: block;}<BR>#navBar ul {list-style: none; margin: 0; padding: 0;}</P>
<P>/* hack to fix IE/Win's broken rendering of block-level anchors in lists */<BR>#navBar li {border-bottom: 1px solid #EEE;}</P>
<P>/* fix for browsers that don't need the hack */<BR>html&gt;body #navBar li {border-bottom: none;}</P>
<P><BR>/*********** #sectionLinks styles ***********/</P>
<P>#sectionLinks{<BR>&nbsp;position: relative;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px;<BR>&nbsp;border-bottom: 1px solid #cccccc;<BR>&nbsp;font-size: 90%;<BR>}</P>
<P>#sectionLinks h3{<BR>&nbsp;padding: 10px 0px 2px 10px;<BR>}</P>
<P>#sectionLinks a {<BR>&nbsp;display: block;<BR>&nbsp;border-top: 1px solid #cccccc;<BR>&nbsp;padding: 2px 0px 2px 10px;<BR>}</P>
<P>#sectionLinks a:hover{<BR>&nbsp;background-color: #dddddd;<BR>}</P>
<P><BR>/*********** .relatedLinks styles ***********/</P>
<P>.relatedLinks{<BR>&nbsp;position: relative;<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 0px 0px 10px 10px;<BR>&nbsp;font-size: 90%;<BR>}</P>
<P>.relatedLinks h3{<BR>&nbsp;padding: 10px 0px 2px 0px;<BR>}</P>
<P>.relatedLinks a:link,<BR>.relatedLinks a:visited {<BR>&nbsp;display: block; <BR>}</P>
<P>/************** #advert styles **************/</P>
<P>#advert{<BR>&nbsp;padding: 30px 0px 10px;<BR>}</P>
<P>#advert img{<BR>&nbsp;display: block;<BR>}</P>
<P><BR>/************** #headlines styles **************/</P>
<P>#headlines{<BR>&nbsp;margin: 0px;<BR>&nbsp;padding: 10px 0px 20px 10px;<BR>&nbsp;font-size: 80%;<BR>}</P>
<P>#headlines p{<BR>&nbsp;padding: 5px 0px 5px 0px;<BR>}</P>
<P>.STYLE1 {font-size: xx-large}<BR>&lt;/style&gt;<BR>&lt;script type="text/javascript"&gt;<BR>function _resize(){<BR>&nbsp;var _h = Pia.isIE ? (document.body.clientHeight - 50) : ((document.body.clientHeight - 60));<BR>&nbsp;if(_h &gt; 0){<BR>&nbsp;&nbsp;document.getElementById("container").style.height = _h;<BR>&nbsp;}<BR>}<BR>&lt;/script&gt;</P>
<P>&lt;/head&gt;<BR>&lt;body&gt;</P>
<P>&lt;div id="masthead"&gt;<BR>&nbsp; &lt;h1 class="STYLE1" id="siteName"&gt;Title tab &lt;/h1&gt;<BR>&lt;/div&gt;<BR>&lt;div&gt;<BR>&lt;div id="navBar"&gt;<BR>&nbsp; &lt;div id="search"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;form action="#"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label&gt;search&lt;/label&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="searchFor" type="text" size="10" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="goButton" type="submit" value="go" /&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/form&gt;<BR>&nbsp; &lt;/div&gt;<BR>&nbsp; &lt;div id="sectionLinks"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;h3&gt;链接&lt;/h3&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="#"&gt;&nbsp; Link1&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="#"&gt;&nbsp; Link2&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp; &lt;/div&gt;<BR>&nbsp; &lt;div class="relatedLinks"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;h3&gt;Related Link Category&lt;/h3&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="#"&gt;Related Link&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="#"&gt;Related Link&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp; &lt;/div&gt;<BR>&nbsp; &lt;div class="relatedLinks"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;h3&gt;Related Link Category&lt;/h3&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="#"&gt;Related Link&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="#"&gt;Related Link&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp; &lt;/div&gt;<BR>&lt;/div&gt;</P>
<P>&lt;!--end headlines --&gt;<BR>&lt;div id="right"&gt;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id=mailItems&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id=topMailList&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="checkbox" type="checkbox" onclick="selectall(this.checked)" value="Check All" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;a href="?page=1&amp;sortby=from&amp;ascent=true&amp;folder=inbox"&gt;发件人&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;a&nbsp;href="?page=1&amp;sortby=subject&amp;ascent=true&amp;folder=inbox"&gt;主题&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;img /&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;span&gt;&lt;a href="?page=1&amp;sortby=date&amp;ascent=true&amp;folder=inbox"&gt;接收时间&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;span&gt;&lt;a href="?page=1&amp;sortby=size&amp;ascent=true&amp;folder=inbox"&gt;大小&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=mailItem&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="checkbox" name="uid" id="uid_167abe78922a1c4768b79fb3b242a1e6.153" value="167abe78922a1c4768b79fb3b242a1e6.153" /&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" onclick="checkBoxSelect('167abe78922a1c4768b79fb3b242a1e6.153');"&gt; 用户服务中心&amp;nbsp;&amp;lt;serv@scut.edu.cn&amp;gt; &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" &gt; 请及时更新病毒库！ &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;img /&gt; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; 2007/07/06 15:14:25&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&nbsp; 1.68 KB&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=mailItem&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="checkbox" name="uid" id="uid_167abe78922a1c4768b79fb3b242a1e6.153" value="167abe78922a1c4768b79fb3b242a1e6.153" /&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" onclick="checkBoxSelect('167abe78922a1c4768b79fb3b242a1e6.153');"&gt; 用户服务中心&amp;nbsp;&amp;lt;serv@scut.edu.cn&amp;gt; &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" &gt; 请及时更新病毒库！ &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;img /&gt; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; 2007/07/06 15:14:25&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&nbsp; 1.68 KB&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=mailItem&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="checkbox" name="uid" id="uid_167abe78922a1c4768b79fb3b242a1e6.153" value="167abe78922a1c4768b79fb3b242a1e6.153" /&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" onclick="checkBoxSelect('167abe78922a1c4768b79fb3b242a1e6.153');"&gt; 用户服务中心&amp;nbsp;&amp;lt;serv@scut.edu.cn&amp;gt; &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" &gt; 请及时更新病毒库！ &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;img /&gt; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; 2007/07/06 15:14:25&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&nbsp; 1.68 KB&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=mailItem&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="checkbox" name="uid" id="uid_167abe78922a1c4768b79fb3b242a1e6.153" value="167abe78922a1c4768b79fb3b242a1e6.153" /&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" onclick="checkBoxSelect('167abe78922a1c4768b79fb3b242a1e6.153');"&gt; 用户服务中心&amp;nbsp;&amp;lt;serv@scut.edu.cn&amp;gt; &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" &gt; 请及时更新病毒库！ &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;img /&gt; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; 2007/07/06 15:14:25&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&nbsp; 1.68 KB&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=mailItem&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="checkbox" name="uid" id="uid_167abe78922a1c4768b79fb3b242a1e6.153" value="167abe78922a1c4768b79fb3b242a1e6.153" /&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" onclick="checkBoxSelect('167abe78922a1c4768b79fb3b242a1e6.153');"&gt; 用户服务中心&amp;nbsp;&amp;lt;serv@scut.edu.cn&amp;gt; &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" &gt; 请及时更新病毒库！ &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;img /&gt; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; 2007/07/06 15:14:25&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&nbsp; 1.68 KB&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=mailItem&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="checkbox" name="uid" id="uid_167abe78922a1c4768b79fb3b242a1e6.152" value="167abe78922a1c4768b79fb3b242a1e6.152" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.152"&nbsp;&nbsp; onclick="checkBoxSelect('167abe78922a1c4768b79fb3b242a1e6.152');"&gt;H.Yuan&amp;nbsp;&amp;lt;hyuan@scut.edu.cn&amp;gt;&lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.152" title="j啦啦啦" target="content" onclick="checkBoxSelect('167abe78922a1c4768b79fb3b242a1e6.152');" style="white-space: nowrap;overflow: hidden;"&gt;just&amp;nbsp;for&amp;nbsp;a&amp;nbsp;look &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;img /&gt; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;2007/07/04 11:21:31 &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; 9.80 KB &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=mailItem&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="checkbox" name="uid" id="uid_167abe78922a1c4768b79fb3b242a1e6.153" value="167abe78922a1c4768b79fb3b242a1e6.153" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt;&lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" onclick="checkBoxSelect('167abe78922a1c4768b79fb3b242a1e6.153');"&gt;用户服务中心&amp;nbsp;&amp;lt;serv@scut.edu.cn&amp;gt; &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;a href="content.jsp?msgid=167abe78922a1c4768b79fb3b242a1e6.153" &gt; 请及时更新病毒库！ &lt;/a&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; &lt;img /&gt;&lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; 2007/07/0615:14:25 &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;li&gt; 1.68 KB&nbsp; &lt;/li&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ul&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; &lt;/div&gt;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; &lt;div id="mailDetail"&gt;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 2.空间定位 </P>
<P>　　在这一节里，我们来看一个利用z-index定位的例子，这个例子的效果在这里。 </P>
<P>　　　　这里利用了CSS定位的z-index属性，代码如下： <BR>&nbsp;</P>
<P>　　通过这两节的例子，我们可以看到CSS定位具有强大的功能，至于其他的一些定位属性，您可以自己尝试一下，很简单的。 </P>
<P>　　　　利用好了CSS的定位功能，会使您的页面更加精致，更加富有动感。 </P>
<P>　　　　下一章我将带您进入CSS滤镜的精彩世界。<BR>&nbsp; 2.空间定位 </P>
<P>　　在这一节里，我们来看一个利用z-index定位的例子，这个例子的效果在这里。 </P>
<P>　　　　这里利用了CSS定位的z-index属性，代码如下： <BR>&nbsp;</P>
<P>　　通过这两节的例子，我们可以看到CSS定位具有强大的功能，至于其他的一些定位属性，您可以自己尝试一下，很简单的。 </P>
<P>　　　　利用好了CSS的定位功能，会使您的页面更加精致，更加富有动感。 </P>
<P>　　　　下一章我将带您进入CSS滤镜的精彩世界。&nbsp; 2.空间定位 </P>
<P>　　在这一节里，我们来看一个利用z-index定位的例子，这个例子的效果在这里。 </P>
<P>　　　　这里利用了CSS定位的z-index属性，代码如下： <BR>&nbsp;</P>
<P>　　通过这两节的例子，我们可以看到CSS定位具有强大的功能，至于其他的一些定位属性，您可以自己尝试一下，很简单的。 </P>
<P>　　　　利用好了CSS的定位功能，会使您的页面更加精致，更加富有动感。 </P>
<P>　　　　下一章我将带您进入CSS滤镜的精彩世界。&nbsp; 2.空间定位 </P>
<P>　　在这一节里，我们来看一个利用z-index定位的例子，这个例子的效果在这里。 </P>
<P>　　　　这里利用了CSS定位的z-index属性，代码如下： <BR>&nbsp;<BR>&nbsp;<BR>&nbsp; <BR>&nbsp;</P>
<P>　　通过这两节的例子，我们可以看到CSS定位具有强大的功能，至于其他的一些定位属性，您可以自己尝试一下，很简单的。 </P>
<P>　　　　利用好了CSS的定位功能，会使您的页面更加精致，更加富有动感。 </P>
<P>　　　　下一章我将带您进入CSS滤镜的精彩世界。&nbsp; 2.空间定位 </P>
<P>　　在这一节里，我们来看一个利用z-index定位的例子，这个例子的效果在这里。 </P>
<P>　　　　这里利用了CSS定位的z-index属性，代码如下： <BR>&nbsp;</P>
<P>　　通过这两节的例子，我们可以看到CSS定位具有强大的功能，至于其他的一些定位属性，您可以自己尝试一下，很简单的。 </P>
<P>　　　　利用好了CSS的定位功能，会使您的页面更加精致，更加富有动感。 <BR>&nbsp; &lt;/div&gt;&nbsp;<BR>&lt;/div&gt;<BR>&lt;/div&gt;</P>
<P>&lt;!--end content --&gt;<BR>&lt;div id="siteInfo"&gt;&lt;img src="" width="44" height="22" /&gt;&lt;a href="#"&gt;About Us&lt;/a&gt; | &lt;a href="#"&gt;Site Map&lt;/a&gt; | &lt;a href="#"&gt;Privacy Policy&lt;/a&gt; | &lt;a href="#"&gt;Contact Us&lt;/a&gt; | &amp;copy; sadadada &lt;/div&gt;<BR>&lt;br /&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;</P></DIV>
<P><BR>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[自适应高度布局]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26269</link>
<author>kcruci</author>
<pubDate>2007/7/12 15:36:38</pubDate>
<description><![CDATA[
<DIV id=header>
<H1><A title=到《自适应高度布局》的永久链接 href="http://blog.rexsong.com/?p=308" rel=bookmark><FONT color=#000000>自适应高度布局</FONT></A></H1><SMALL><FONT color=#999999>星期五 03.17.2006 - Posted in </FONT><A title="查看 Web客户端技术 的所有文章" href="http://blog.rexsong.com/?cat=3" rel="category tag"><FONT color=#0066cc>Web客户端技术</FONT></A><FONT color=#999999>, <SPAN class=tags>No Tags</SPAN></FONT></SMALL> </DIV>
<HR>

<DIV class=post id=post-308>
<DIV class=entry>
<P><A href="http://static.flickr.com/46/113611565_81922b5169_o.gif" target=_blank><IMG class=img_normal alt=http://static.flickr.com/46/113611565_81922b5169_o.gif src="http://static.flickr.com/46/113611565_81922b5169_o.gif" onload=javascript:DrawImage(this,520);></A><BR>要实现的是head foot固定，中间区域随内容高度自适应，拖动滚动条时foot永远居底。</P>
<P><A title=http://solardreamstudios.com/learn/css/footerstick/ href="http://solardreamstudios.com/learn/css/footerstick/" target=_blank><FONT color=#0066cc>SolarDreamStudios</FONT></A>的方案给了我一个很好的思路，但关键部分是原创的，一直以为会比SolarDreamStudios的方案好，结果仔细看他们的代码，才发现其实原理都差不多，不过他们似乎在兼容性上下了更多工夫，具体未测试。</P>
<P><B>A. 宽度100%自适应</B></P>
<P>结构代码</P>
<DIV class=code>&lt;body&gt; 
<P></P>
<P>&lt;div id="head"&gt;head&lt;/div&gt;<BR>&lt;div id="head_height"&gt;&lt;/div&gt;</P></DIV>
<P><A id=more-308></A><BR>&lt;div id="middle"&gt;&lt;/div&gt;</P>
<P>&lt;div id="foot_height"&gt;&lt;/div&gt;<BR>&lt;div id="foot"&gt;foot&lt;/div&gt;</P>
<P>&lt;/body&gt;[/code]<BR>表现代码</P>
<DIV class=code>#head { width:100%; text-align:center; background:#FF9400; height:100px; position:absolute; top:0;}<BR>$nbsp$$nbsp$#head_height { height:100px;}<BR>#middle { margin:20px;}<BR>#foot { width:100%; text-align:center; background:#f00; height:100px; position:absolute; bottom:0;}<BR>* html #foot { bottom:-1px;}<BR>$nbsp$$nbsp$#foot_height { height:100px;}</DIV>
<P>Demo <A title=http://www.rexsong.com/blog/attachments/200603/17_095405_height100_a.htm href="http://www.rexsong.com/blog/attachments/200603/17_095405_height100_a.htm" target=_blank><FONT color=#b85b5a>http://www.rexsong.com/blog/attachments/200603/17_095405_height100_a.htm</FONT></A></P>
<P><B>B. 宽度固定居中</B></P>
<P>结构代码</P>
<DIV class=code>&lt;body&gt; 
<P></P>
<P>&lt;div id="head"&gt;<BR>$nbsp$$nbsp$&lt;div id="head_content"&gt;head&lt;/div&gt;<BR>&lt;/div&gt;<BR>&lt;div id="head_height"&gt;&lt;/div&gt;</P>
<P>&lt;div id="middle"&gt;&lt;/div&gt;</P>
<P>&lt;div id="foot_height"&gt;&lt;/div&gt;<BR>&lt;div id="foot"&gt;<BR>$nbsp$$nbsp$&lt;div id="foot_content"&gt;foot&lt;/div&gt;<BR>&lt;/div&gt;</P>
<P>&lt;/body&gt;</P></DIV>
<P>表现代码</P>
<DIV class=code>#head { width:100%; text-align:center; position:absolute; top:0; left:0;}<BR>$nbsp$$nbsp$#head_content { line-height:100px; width:700px; margin:0 auto; background:#FF9400; height:100px;}<BR>$nbsp$$nbsp$#head_height { height:100px;}<BR>#middle { margin:20px;}<BR>#foot { width:100%; text-align:center; position:absolute; bottom:0;}<BR>* html #foot { bottom:-1px;}<BR>$nbsp$$nbsp$#foot_content { line-height:100px; width:700px; margin:0 auto; background:#f00; height:100px;}<BR>$nbsp$$nbsp$#foot_height { height:100px;}</DIV>
<P>Demo <A title=http://www.rexsong.com/blog/attachments/200603/17_095422_height100_b.htm href="http://www.rexsong.com/blog/attachments/200603/17_095422_height100_b.htm" target=_blank><FONT color=#b85b5a>http://www.rexsong.com/blog/attachments/200603/17_095422_height100_b.htm</FONT></A></P>
<P><SPAN style="COLOR: blue">测试环境IE6.0和FF1.5，IE环境下因为BUG有时会自动出现滚动条（SolarDreamStudios的方案一样），FF下为完美效果。</SPAN></P>
<P><I><B>Forum</B></I><BR>DIV+CSS如何实现中间区域自适应高度？ <A title=http://www.blueidea.com/bbs/NewsDetail.asp?lp=2&amp;id=2494868 href="http://www.blueidea.com/bbs/NewsDetail.asp?lp=2&amp;id=2494868" target=_blank><FONT color=#0066cc>http://www.blueidea.com/bbs/NewsDetail.asp?lp=2&amp;id=2494868</FONT></A><BR>三行两列布局能否最小高度为100%？ <A title=http://dw8.cn/forum/NewsDetail.asp?id=1295 href="http://dw8.cn/forum/NewsDetail.asp?id=1295" target=_blank><FONT color=#0066cc>http://dw8.cn/forum/NewsDetail.asp?id=1295</FONT></A></P>
<P><I><B>Referrence</B></I><BR>A more robust method of positioning a footer <A title=http://www.themaninblue.com/writing/perspective/2005/08/29/ href="http://www.themaninblue.com/writing/perspective/2005/08/29/" target=_blank><FONT color=#0066cc>http://www.themaninblue.com/writing/perspective/2005/08/29/</FONT></A><BR>footerStick <A title=http://solardreamstudios.com/learn/css/footerstick/ href="http://solardreamstudios.com/learn/css/footerstick/" target=_blank><FONT color=#0066cc>http://solardreamstudios.com/learn/css/footerstick/</FONT></A></P></DIV></DIV>]]></description>
</item><item>
<title><![CDATA[显示属性]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26260</link>
<author>kcruci</author>
<pubDate>2007/7/12 9:50:49</pubDate>
<description><![CDATA[<H1>显示属性</H1>
<P class=submenu><A href="http://wuhuifeng.com/">主页</A> &gt; <A href="http://wuhuifeng.com/guides/">HTMLDog指南</A> &gt; <A href="http://wuhuifeng.com/guides/cssadvanced/">CSS高级指南</A> &gt; <A href="http://wuhuifeng.com/guides/cssadvanced/display/">显示属性</A></P><!--头部结束-->
<DIV id=content><!--内容开始-->
<DIV id=maintext>
<P>处理<ABBR title="HyperText Markup Language">HTML</ABBR>元素最关键的一个窍门，没有任何特别的，就是理解他们是如何工作的。大部分页面都可以使用一点点的标签组合起来，你可以为每一个你选定的标签样式化。浏览器默认的可视化样式元素由变化的字体样式、边界、补白和，和重要的，显示类型。</P>
<P>最基本的显示类型是<STRONG>内联inline</STRONG>、<STRONG>块block</STRONG>和<STRONG>清除none</STRONG>，他们分别可以用<CODE>inline</CODE>、<CODE>block</CODE>和<CODE>none</CODE>的值赋予<CODE>display</CODE>属性来操作。</P>
<P><CODE>inline</CODE>就如本身语义所明示的，显示随着行流动的元素。锚和强调元素都是传统的内联元素。</P>
<P><CODE>block</CODE>使元素前后都有断行。<STRONG>标题</STRONG>和<STRONG>段落</STRONG>元素都是传统的块元素的例子。</P>
<P><CODE>none</CODE>，嗯，不显示这个元素，听起来毫无用处，但于易用性考虑（请看<A href="http://wuhuifeng.com/guides/htmladvanced/links/">亲和连接</A>），改变样式表，或者高级的翻转效果都有很好的用途。</P>
<P>比如这个站点的默认原始版本，通过操纵一些传统的内联和块元素来适应设计。</P><PRE><CODE>h1 {</CODE> <CODE class=m1><STRONG>display: inline;</STRONG></CODE> <CODE class=m1>font-size: 2em;</CODE> <CODE>}</CODE> <CODE>#header p {</CODE> <CODE class=m1><STRONG>display: inline;</STRONG></CODE> <CODE class=m1>font-size: 0.9em;</CODE> <CODE class=m1>padding-left: 2em;</CODE> <CODE>}</CODE> </PRE>
<P>这使得“htmldog.com”的标题和标签行可以并排，而不是一上一下，维护最优的易用性。</P><PRE><CODE>#navigation, #seeAlso, #comments, #standards {</CODE> <CODE class=m2><STRONG>display: none;</STRONG></CODE> <CODE>}</CODE> </PRE>
<P>上述代码使用在打印样式中，用于“关闭”这些元素，比如，对于一个单一的页面导航通常是不必须的。</P>
<DIV class=note>
<H3>注意</H3>
<P><CODE>display: none</CODE>和<CODE>visibility: hidden</CODE>不同之处在于<CODE>display: none</CODE>使元素完全是个死球，然而<CODE>visibility: hidden</CODE>虽不出现在内容中但保留着这个元素的流位置。比如，如果三段中的第二端设为<CODE>display: none</CODE>，第一段会直接到达第三段，而设为<CODE>visibility: hidden</CODE>的话，这个段落会有一个间隔。</P></DIV>
<H2>表格</H2>
<P>也许理解表格相关的显示属性值的最好方法是关心HTML表格。<CODE>table</CODE>是初始化的显示，你可以用<CODE>tr</CODE>和<CODE>td</CODE>分别摹拟<CODE>table-row</CODE>和<CODE>table-cell</CODE>值。</P>
<P><CODE>display</CODE>属性走得更远，提供<CODE>table-column</CODE>、<CODE>table-row-group</CODE>、<CODE>table-column-group</CODE>、<CODE>table-header-group</CODE>、<CODE>table-footer-group</CODE>和<CODE>table-caption</CODE>的值， 都是自描述的。这些值显而易见的好处是，你可以用列来构造表格，代替有偏见的<CODE>row</CODE>。</P>
<P>最后，<CODE>inline-table</CODE>设置前后不断行的表格。</P>
<DIV class=note>
<H3>注意</H3>
<P>对<ACRONYM title="Cascading Style Sheets">CSS</ACRONYM>表格失去控制的话，可能严重的损害你网页的亲和力（易用性）。HTML应该用来传达内容的，所以你有表格式数据的话，你应该用HTML表格来安排它们。使用CSS表格仅仅能给数据调调味，如果没有CSS的话完全不可读。十分不好。别走Michael Jackson的路。</P></DIV>
<H2>其他显示类型</H2>
<P><CODE>list-item</CODE>也是自描述的，一般以列表的形式显示，使用在除li的HTML元素上。为了显示正确，使用这个显示类型的应该嵌套在ul或者ol元素内。</P>
<P><CODE>run-in</CODE>使元素内联或块显示，取决于其父元素的的显示属性。在IE和基于Mozilla的浏览器中都不能工作。</P>
<P><CODE>campact</CODE>也使元素内联或者块显示，同样取决于上下文。它也不能很好工作。</P>
<P><CODE>marker</CODE>仅仅是与<CODE>:before</CODE>和<CODE>:after</CODE><A href="http://wuhuifeng.com/guides/cssadvanced/pseudoelements/">伪元素</A>一起来定义<CODE>content</CODE>属性的值。<CODE>content</CODE>属性的自动值已经是<CODE>marker</CODE>，所以这只对覆盖掉前面的<CODE>content</CODE>的显示属性有用。</P>
<H3 class=break>延伸阅读</H3>
<UL>
<LI>HTML高级指南的<A href="http://wuhuifeng.com/guides/htmlintermediate/spandiv/">Span和Div</A> 
<LI><A href="http://wuhuifeng.com/guides/htmladvanced/tables/">精通表格</A>──也许能更好地帮助你理解<CODE>display</CODE>的值 </LI></UL></DIV></DIV>]]></description>
</item><item>
<title><![CDATA[css 伪类]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26259</link>
<author>kcruci</author>
<pubDate>2007/7/12 9:43:15</pubDate>
<description><![CDATA[<P><A>&nbsp;</A></P>
<H1>伪类</H1>
<P class=submenu><A href="http://wuhuifeng.com/">主页</A> &gt; <A href="http://wuhuifeng.com/guides/">HTMLDog指南</A> &gt; <A href="http://wuhuifeng.com/guides/cssintermediate/">CSS中级指南</A> &gt; <A href="http://wuhuifeng.com/guides/cssintermediate/pseudoclasses/">伪类</A></P><!--头部结束-->
<DIV id=content><!--内容开始-->
<DIV id=maintext>
<P>伪类（<STRONG>Pseudo classes</STRONG>）是选择符的螺栓，用来指定一个或者与其相关的选择符的状态。它们的形式是<STRONG>selector:pseudo class { property: value; }</STRONG>，简单地用一个半角英文冒号（<STRONG>:</STRONG>）来隔开选择符和伪类。</P>
<P><ACRONYM title="Cascading Style Sheets">CSS</ACRONYM>很多的建议并没有得到浏览器的支持，但有四个可以安全使用的用在连接上的伪类。</P>
<H2>伪类</H2>
<P>伪类（<STRONG>Pseudo classes</STRONG>）是选择符的螺栓，用来指定一个或者与其相关的选择符的状态。它们的形式是<STRONG>selector:pseudo class { property: value; }</STRONG>，简单地用一个半角英文冒号（<STRONG>:</STRONG>）来隔开选择符和伪类。</P>
<P><ACRONYM title="Cascading Style Sheets">CSS</ACRONYM>很多的建议并没有得到浏览器的支持，但有四个可以安全使用的用在连接上的伪类。</P>
<UL>
<LI><STRONG><CODE>link</CODE></STRONG>用在为访问的连接上。 
<LI><STRONG><CODE>visited</CODE></STRONG>用在已经访问过的连接上。 
<LI><STRONG><CODE>active</CODE></STRONG>用于获得焦点（比如，被点击）的连接上。 
<LI><STRONG><CODE>hover</CODE></STRONG>hover用于鼠标光标置于其上的连接。 </LI></UL><PRE><CODE>a.snowman<STRONG>:link</STRONG> {</CODE> <CODE class=m1>color: blue;</CODE> <CODE>}</CODE> <CODE>a.snowman<STRONG>:visited</STRONG> {</CODE> <CODE class=m1>color: purple;</CODE> <CODE>}</CODE> <CODE>a.snowman<STRONG>:active</STRONG> {</CODE> <CODE class=m1>color: red;</CODE> <CODE>}</CODE> <CODE>a.snowman<STRONG>:hover</STRONG> {</CODE> <CODE class=m1>text-decoration: none;</CODE> <CODE class=m1>color: blue;</CODE> <CODE class=m1>background-color: yellow;</CODE> <CODE>}</CODE> </PRE>
<DIV class=note>
<H3>注意</H3>
<P>尽管CSS给予你绕开的控制权，用不同的颜色表示已经访问过的连接是一个很好的习惯，因为很多用户还是这样预期的。伪类（除了<CODE>hover</CODE>）不常用，恐怕也没有过去常用。因此，它没有过去那样有用了。但如果你能收集常用用户的意见，你会发现应该使用它。</P>
<P>传统上，连接文本是<STRONG><SPAN style="COLOR: blue">蓝色</SPAN></STRONG>的，已访问的连接是<STRONG><SPAN style="COLOR: purple">紫色</SPAN></STRONG>的。也许，这是最有效、最有用的颜色。然而，伴随着CSS的广泛发展，这种颜色不会是平常的了，用户也不再假设连接必须是蓝色或紫色的。</P></DIV>
<DIV class=note>
<H3>注意</H3>
<P>你应该也可以在除了连接的其他元素上使用<CODE>hover</CODE>伪类。不幸的是，Internet Explore并不支持。这真是一个极大的烦恼，因为在其它浏览器上可以有很多小技巧让你的页面看起来更令人愉快。</P></DIV>
<H3 class=break>延伸阅读</H3>
<UL>
<LI>CSS初级指南的<A href="http://wuhuifeng.com/guides/cssbeginner/selectors/">标签、属性和元素</A> 
<LI>CSS高级指南的<A href="http://wuhuifeng.com/guides/cssadvanced/atrules/">at规则</A>──页面媒体的伪类 </LI></UL></DIV></DIV>]]></description>
</item><item>
<title><![CDATA[html 标准要点]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26257</link>
<author>kcruci</author>
<pubDate>2007/7/12 9:31:32</pubDate>
<description><![CDATA[<A><FONT size=3>　</FONT></A><FONT size=3> </FONT>
<H1><FONT size=3>标准要点</FONT></H1>
<P class=submenu><A href="http://wuhuifeng.com/"><FONT size=3>主页</FONT></A><FONT size=3> &gt; </FONT><A href="http://wuhuifeng.com/guides/"><FONT size=3>HTMLDog指南</FONT></A><FONT size=3> &gt; </FONT><A href="http://wuhuifeng.com/guides/htmladvanced/"><FONT size=3>HTML高级指南</FONT></A><FONT size=3> &gt; </FONT><A href="http://wuhuifeng.com/guides/htmladvanced/recap/"><FONT size=3>标准要点</FONT></A></P><!--头部结束-->
<DIV id=content><!--内容开始-->
<DIV id=maintext>
<P><FONT size=3>这个教程给那些虽然已经了解<ABBR title="HyperText Markup Language">HTML</ABBR>，但对经不起未来<ABBR title="eXtensible HyperText Markup Language">XHTML</ABBR>标准的考验，隐含在分离内容和表现后面含义还未觉醒的人们。</FONT></P>
<H2><FONT size=3>分离内容和表现</FONT></H2>
<P><FONT size=3>HTML从来就不是表现的手段，但从用户端结合元素来格式化文本，开发者从中找到操作布局的方法。CSS的强大，使得现在不再需要用HTML做任何表现了，而内容也可以完全从表现（CSS）中分离出来。</FONT></P>
<P><FONT size=3>这样做有很多好处──通常可以<STRONG>压缩文件</STRONG>容量，有着用一个主要样式表就可控制整个网站而不是单个页面的<STRONG>灵活性</STRONG>，也可能使页面更<SRONG>易用</SRONG>，更具<SRONG>亲和力</SRONG>。</FONT></P>
<P><FONT size=3>遵循这些基本原则基本上意味着你不应该在HTML内使用样式化的任何事物了。比如<CODE>font</CODE>的标签，比如<CODE>bgcolor</CODE>的属性不应该再使用。甚至在图像标签<CODE>img</CODE>内的边框属性<CODE>border</CODE>在<ABBR title="eXtensible HyperText Markup Language">XHTML</ABBR> 1.1中也是非法的了。别担心，过时的HTML可以样式化，CSS更可以样式化，而且可以做得更好。</FONT></P>
<P><FONT size=3>不仅仅是从HTML内剥离表现，内容的结构意味着在适合的地方使用明确的HTML标签。比如，<CODE>h1</CODE>，<CODE>h2</CODE>等应用在标题上──而不仅仅是使用CSS使字体变大而已。</FONT></P>
<P><FONT size=3>最佳指引就是一个可视化的浏览器上使用其默认的样式来呈现一个没有样式表（或者有样式表，但不支援样式表的文本浏览器，比如lynx——译者注）的页面。</FONT></P>
<P><FONT size=3><STRONG>表格不应该用在布局上</STRONG>──表格用来表示表格式的数据（我们已经不厌其烦地说了很多次──译者注）。也许对于已经习惯传统结构的HTMLer来说，完全改变有很大的技术难度。这个方法很大程度上压缩了文件，而且，基于这些显性代码，它变得更易用，更具亲和力。</FONT></P>
<P><FONT size=3>关于更多，请阅读</FONT><A href="http://wuhuifeng.com/guides/cssadvanced/"><FONT size=3>CSS高级指南</FONT></A><FONT size=3>的</FONT><A href="http://wuhuifeng.com/guides/cssadvanced/layout/"><FONT size=3>布局</FONT></A><FONT size=3>。</FONT></P>
<H2><FONT size=3>标签</FONT></H2>
<P><FONT size=3>在XHTML中所有的标签都必须<STRONG>小写</STRONG>和<STRONG>关闭</STRONG>。没有闭合标签的（如<CODE>br</CODE>和<CODE>img</CODE>）必须用英文半角正斜杠“/”在后面自关闭（如<CODE>&lt;br /&gt;</CODE>）。注意在斜杠前应该有一个英文半角空格。</FONT></P>
<P><FONT size=3>标记也必须是<STRONG>合式</STRONG>的，使元素<STRONG>正确嵌套</STRONG>（比如<CODE>&lt;strong&gt;&lt;em&gt;this&lt;/em&gt;&lt;/strong&gt;</CODE>，而不是<CODE>&lt;strong&gt;&lt;em&gt;this&lt;/strong&gt;&lt;/em&gt;</CODE>）。</FONT></P>
<P><FONT size=3>所有的文档都要有<CODE>html</CODE>，<CODE>head</CODE>，<CODE>title</CODE>和<CODE>body</CODE>元素。也必须从</FONT><A href="http://wuhuifeng.com/guides/htmladvanced/recap/declarations.php"><FONT size=3>文档类型声明</FONT></A><FONT size=3>开始。</FONT></P>
<P><FONT size=3>文档主体应该从 <CODE>p</CODE>， <CODE>h1</CODE>，<CODE>h2</CODE>， <CODE>h3</CODE>，<CODE>h4</CODE>，<CODE>h5</CODE>，<CODE>h6</CODE>，<CODE>div</CODE>， <CODE>pre</CODE>，<CODE>address</CODE>，<CODE>ins</CODE>或者<CODE>del</CODE>开始。</FONT></P>
<H2><FONT size=3>属性</FONT></H2>
<P><FONT size=3>所有的属性必须是<STRONG>小写</STRONG>的，它们的值也要用<STRONG>英文半角引号括（"）</STRONG>起来。</FONT></P>
<P><FONT size=3><STRONG>精简属性</STRONG>是不允许的（比如<CODE>&lt;input type="checkbox" checked /&gt;</CODE>）。按惯例，精简属性必须给出跟属性名称一样的值（如 <CODE>&lt;input type="checkbox" checked="checked" /&gt;</CODE>）。</FONT></P>
<P><FONT size=3>名字 <CODE>name</CODE>属性不再是合法的了（除了在表单元素中），应该使用<CODE>id</CODE>来代替。</FONT></P>
<P><FONT size=3>目标属性<CODE>target</CODE>不是一个合法的属性。庆幸吧，它有些癫狂。</FONT></P>
<P><FONT size=3>在<CODE>img</CODE>里，<CODE>alt</CODE>属性是必须的。</FONT></P>
<H2><FONT size=3>亲和力</FONT></H2>
<P><FONT size=3>为残障人士制做具有亲和力网页的理由是不证而明的。不仅是人道的，而且也对老年用户和五官功能减退的用户有利（想一想，有一天我们老了，视力消退，五官不灵，怎么浏览互联网？为年老积点德，现在就考虑亲和力吧！——译者注）。亲和力不仅与有严重残障人士方便，也使大部分少量消退功能（特别是视觉）的用户更为易用。</FONT></P>
<P><FONT size=3>这个问题越来越牵涉法律问题了，比如美国的“508条款”的采用，试图积极推动强制使用亲和力；在英国，所有的政府网站必须有一个指定的亲和力程度。什么时候才可以有像在建筑物上的亲和措施的立法，以便普遍用在商业网站上？（中国还不知道什么时候有这种立法呢！但不等于我们就不要关注我们设计的网页的合法性。——译者注）</FONT></P></DIV></DIV>]]></description>
</item><item>
<title><![CDATA[html 不良标签]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=kcruci&amp;id=26256</link>
<author>kcruci</author>
<pubDate>2007/7/12 9:15:26</pubDate>
<description><![CDATA[
<P><A href="http://wuhuifeng.com/guides/htmlintermediate/badtags/">http://wuhuifeng.com/guides/htmlintermediate/badtags/</A></P>
<H1>不良标签</H1>
<P class=submenu><A href="http://wuhuifeng.com/">主页</A> &gt; <A href="http://wuhuifeng.com/guides/">HTMLDog指南</A> &gt; <A href="http://wuhuifeng.com/guides/htmlintermediate/">HTML中级指南</A> &gt; <A href="http://wuhuifeng.com/guides/htmlintermediate/badtags/">不良标签</A></P><!--头部结束-->
<DIV id=content><!--内容开始-->
<DIV id=maintext>
<P><FONT size=2>这次着眼于一些童话世界和史前时代的<ABBR title="HyperText Markup Language">HTML</ABBR>标签。它们是被HTML标准抛弃的不良、肮脏、十足丑陋的，胡乱荒谬的属性，只能部分地工作在一个次版本的浏览器上或者可以被新标签取代的标签。</FONT></P>
<P><FONT size=2>有人建议我们不要歌颂标准尽管我们教授基于标准的HTML和<ACRONYM title="Cascading Style Sheets">CSS</ACRONYM>，但如果这样的话，用户（特别是初学者）会遭遇不良的入门方法和不良练习，同时他们并不知道哪里出错了。所以我们的答案是：<STRONG>一份拒绝不良标签的指南</STRONG>。</FONT></P>
<P><FONT size=2>HTML已经尝试去除表现和朝向内容发展，导致这样一个基本原理：从<STRONG>表现</STRONG>（CSS）中分离出<STRONG>内容意义</STRONG>（HTML）。这将会给网页减肥，因为一个表现指令集合（以外部CSS文档的形式）可以应用到多个页面。这也会使网站更易于管理因为全局变动可以从修改一个单独的文件得到。</FONT></P>
<P><FONT size=2>部分不良标签基本上是表现标签（比如<CODE>small</CODE>），它们可以用更有意义和更简单的CSS规则取代。其他的不仅用于表现，而且还是不必要的庞大（比如<CODE>font</CODE>标签）或者对可用性有害的可恶的（比如<CODE>blink</CODE>）。</FONT></P>
<H2><FONT size=2>标签</FONT></H2>
<P><FONT size=2>下面这些是你可能会经常碰到的可以有更好选择的标签：</FONT></P>
<UL>
<LI><FONT size=2><STRONG><CODE>b</CODE></STRONG> 可以用来产生粗体元素。使用<CODE>strong</CODE>（意味着强烈强调）代替更有意义，或者用CSS来完成这项工作，增加<CODE>font-weight: bold</CODE>的规则，用来表明粗体元素。 </FONT>
<LI><FONT size=2><STRONG><CODE>i</CODE></STRONG>可以用来产生斜体元素。使用<CODE>em</CODE>（表示强调），这也更有意义。或者可以用CSS来表现斜体：<CODE>font-style: italic</CODE> </FONT>
<LI><FONT size=2><STRONG><CODE>big</CODE></STRONG>可以产生更大字体。使用标题（如<CODE>h1</CODE>，<CODE>h2</CODE>等，当文本本来就是一个标题时）代替，增加了意义，或简单地在CSS中使用<CODE>font-size</CODE>属性，获取更多的控制权。 </FONT>
<LI><FONT size=2><STRONG><CODE>small</CODE></STRONG> 可以产生小字体。CSS（<CODE>font-size</CODE>）再一次取得更多的控制权。 </FONT>
<LI><FONT size=2><STRONG><CODE>hr</CODE></STRONG> 可用用来展现一条水平线。在CSS中用<CODE>hr</CODE>设计很少见，CSS的<CODE>border-top</CODE>，<CODE>border-bottom</CODE>属性或者朴素的图像做这个效果会更好。 </FONT></LI></UL>
<P><FONT size=2>上述的标签与最新的HTML标准尽管都兼容，但对内容却没有任何好标签应有的意义。They could be more useful but they aren't particularly harmful, and might easily be mistaken for innocent butter-wouldn't-melt-in-their-mouth nuggets of pure goodness when standing next to the following filthy tags.</FONT></P>
<UL>
<LI><FONT size=2><STRONG><CODE>u</CODE></STRONG>可以为元素产生下划线。它提醒着下划线文本还很多连接关联。这就是这个标签死了很久的原因——你不必给非连接文本下划线。 </FONT>
<LI><FONT size=2><STRONG><CODE>center</CODE></STRONG>可以用来居中在元素内部的元素。CSS属性<CODE>text-align</CODE>允许不仅仅是<CODE>center</CODE>，还有<CODE>left</CODE>、<CODE>right</CODE>和<CODE>justify</CODE>。 </FONT>
<LI><FONT size=2><STRONG><CODE>menu</CODE></STRONG>用来创建菜单列表。它并没有<CODE>ul</CODE>做的完美，在因为无序列表更通用，<CODE>ul</CODE>高高地站在menu的尸体上。 </FONT>
<LI><FONT size=2><STRONG><CODE>layer</CODE></STRONG>和<CODE>div</CODE>元素相似，都由CSS绝顶位置。这仅仅能在老版本的Netscape中工作，所以再也没有什么用。 </FONT>
<LI><FONT size=2><STRONG><CODE>blink</CODE></STRONG>或者<STRONG><CODE>marquee</CODE></STRONG>。大声说不！它们应该像本身意义一样被期待，但有着十分有限的支持，和，只会产生非常，非常恶心的</FONT><A href="http://www.goer.org/Journal/2003/Oct/index.html#26"><FONT size=2>笑话</FONT></A><FONT size=2>。 </FONT>
<LI><FONT size=2><STRONG><CODE>font</CODE></STRONG>，可以用来定义元素的字体名称，尺寸和颜色，在标签世界中理所当然地获得了臭名昭著标签之王荣誉称号。旧的网站（甚至新的也有）像满世界的瘟疫之蚁一样布满整个页面。大部分的<CODE>font</CODE>标签激增是从网页制作软件带来的，把<CODE>font</CODE>标签包括颜色和尺寸用在每一个元素。<CODE>font</CODE>标签被滥用到出现在当前的每一个重复元素的（如，每次你使用<CODE>p</CODE>元素），而CSS，则可以用一条简短的代码来应用重复元素，甚至控制整个网站。使用CSS方法，不仅可以使页面比被大量<CODE>font</CODE>标签寄生的<STRONG>更苗条</STRONG>，而且更容易维护因为你所需要做得只是改变CSS文件中的<STRONG>一行</STRONG>，而不是逐一修改每一个<CODE>font</CODE>标签。这也增加了维护一个一直保持设计风格一致的网站的可能性。<CODE>font</CODE>标签和不恰当的表格使用是两个产生网页不必要臃肿的主要原因。 </FONT></LI></UL>
<H2><FONT size=2>属性</FONT></H2>
<P><FONT size=2>可能你认为你正在使用良好的标签，但还是有一些麻烦的寄生虫属性潜伏，它们随时会冒出来。</FONT></P>
<UL>
<LI><FONT size=2><STRONG><CODE>name</CODE></STRONG>用来为一个元素指定一个名字，它在如<CODE>input</CODE>的表单元素中完全被接受，但在其它地方，<CODE>name</CODE>的工作已经被<CODE>id</CODE>属性取代。 </FONT>
<LI><FONT size=2><STRONG><CODE>text</CODE></STRONG>和<STRONG><CODE>bgcolor</CODE></STRONG>可以在<CODE>body</CODE>起始标签中定义页面的基本文本颜色和背景颜色。CSS的<CODE>color</CODE>和<CODE>background-color</CODE>属性在应用到<CODE>body</CODE>选择符时也可以做到。 </FONT>
<LI><FONT size=2><STRONG><CODE>background</CODE></STRONG>可以在body标签中指定一个背景图画。CSS会做得更好，用如background-image的属性来处理背景图片。 </FONT>
<LI><FONT size=2><STRONG><CODE>link</CODE></STRONG>、<STRONG><CODE>alink</CODE></STRONG>、<STRONG><CODE>vlink</CODE></STRONG>在<CODE>body</CODE>标签中用来指定连接（未访问，激活和已访问）。CSS宝贝── <CODE>:link</CODE>、<CODE>:active</CODE>和<CODE>:visited</CODE>会做这项工作。 </FONT>
<LI><FONT size=2><STRONG><CODE>align</CODE></STRONG>可以用来对齐某个元素的内容（比如 <CODE>&lt;div align="center"&gt;Stuff&lt;/div&gt;</CODE>），但是，像<CODE>center</CODE>标签，CSS的<CODE>text-align</CODE>属性是新的老板。 </FONT>
<LI><FONT size=2><STRONG><CODE>target</CODE></STRONG>可以用不同的方式打开一个连接，最常用的是打开新窗口（比如<CODE>&lt;a href="wherever.html" target="_blank"&gt;Help me&lt;/a&gt;</CODE>）。看起来不错，但你不要对你的网站这样做。用户并不预期不可思议的东西（比如新窗口）出现，而且最常用的浏览工具是浏览器的后退按钮，如果你打开新窗口，这将不可用。它是非法和不易用的。 </FONT></LI></UL>
<DIV class=note>
<H3><FONT size=2>注意</FONT></H3>
<P><FONT size=2>保留标签的表现属性如图像的<CODE>width</CODE>和<CODE>height</CODE>，表格的<CODE>cellpadding</CODE>和<CODE>cellspacing</CODE>，是由于这些元素经常使用不同的值。这不是完美的解决方案，但如果你的网页有大量的图像和表格，你没有其他的明智选择，只好使用它们。</FONT></P>
<P><FONT size=2>最让人难以理解的表现属性是<CODE>textarea</CODE>标签，它仅有<CODE>cols</CODE>和<CODE>rows</CODE>两个合法属性，在最新的HTML版本中也是必须的。</FONT></P></DIV>
<H2><FONT size=2>良好标签，不良使用</FONT></H2>
<P><FONT size=2>要进入你的卧室你可以弯腰通过一个狗洞，但等等，还有一扇有把手的为人类准备的门！哇，看——刚好适合一个进入。</FONT></P>
<P><FONT size=2>使用HTML标签（好标签），无论相信与否（相信它！），有一个很好的的理由：你使用它们有一个好前提，你就会有一个更好的结果。</FONT></P>
<P><FONT size=2>网页本身对用户来说，比起HTML标签语法语义更易用，屏幕阅读器常会在遇到一个<CODE>ul</CODE>标签或者有着<CODE>h1</CODE>或<CODE>h2</CODE>的标题标签时强调突出它们。</FONT></P>
<P><FONT size=2>在HTML标签世界中最被滥用的就是表格了。表格常常用来布局，但表格应该仅仅只用来展示表格式数据，就如它们本身的设计意图。</FONT><A href="http://wuhuifeng.com/guides/cssadvanced/layout/"><FONT size=2>不用表格的布局方法</FONT></A><FONT size=2>不是追求开悟的某种禅，它不仅可以显著地为网页减肥，而且更易于维护和重新设计。</FONT></P>
<DIV class=note>
<H3><FONT size=2>注意</FONT></H3>
<P><FONT size=2>有时侯设计者还会用在这里提到的这些标签和属性（特别是用表格来布局）来做<STRONG>过渡型</STRONG>的设计──既可以工作在老版本的浏览器上（尤其是Netscape4），也可以工作在现代浏览器上。表格确实可以在CSS不称职的Netscape4上有更强的表现控制。很不幸，这些用户很少而且越来越少了，而展现表格布局的缺点一览无遗的移动设备用户越来越多。上述的无表格设计可以预防这些缺点，尽管对一小部分的用户有些许的表现改变，但还能在<STRONG>所有的</STRONG>浏览其中保持着完全的功能。</FONT></P></DIV>
<H2><FONT size=2>框架</FONT></H2>
<P><FONT size=2>Goldilocks认为喝上一杯麦片粥是一个不错的注意，但三个硕大的肉食哺乳动物突然出现，把她丢出窗户。框架就是装麦片粥的杯子。它们看起来似乎不错，但已经到了濒危阶段而且很快就会消失。</FONT></P>
<P><FONT size=2>大部分的网站并不是用框架，而一般用户也会把一个文档当作一页。</FONT></P>
<P><FONT size=2>有些情况，如你要防止用户不能把特定的网页添加到书签，又如你希望用户用Email或即时聊天软件推荐特定的网页，又或你想把整个网站变得十分复杂，让使用屏幕阅读器的用户在框架之间频繁操作，还或者你想迷惑搜索引擎，够了够了，你使用框架吧！</FONT></P>
<P><FONT size=2>总之，框架只会<STRONG>增加复杂性</STRONG>和<STRONG>丧失可用性</STRONG>。</FONT></P>
<DIV class=note>
<H3><FONT size=2>注意</FONT></H3>
<P><FONT size=2>只要你遵循下列规则，你不会在犯错上有前途：</FONT></P>
<P><FONT size=2><STRONG>1）</STRONG>一个标签或者属性就算只有一点点的跟<STRONG>表现</STRONG>搭上，都不要使用。那是CSS的事。并且CSS做得更好。</FONT></P>
<P><FONT size=2><STRONG>2）</STRONG>把标签使用在如它的<STRONG>名字所暗示</STRONG>的用途上。表格标签是用在表格式数据上的。标题标签是用在标题上的。等等等等。</FONT></P>
<P><FONT size=2><STRONG>3）</STRONG>特定的内容用<STRONG>恰当</STRONG>的标签。列表用<CODE>list</CODE>，标题用hx(x = 1 - 7)等等等等。</FONT></P></DIV></DIV></DIV>]]></description>
</item>
</channel>
</rss>