常用编程

 using System;
  
   namespace DataStruct
   {
       public class Sorter
       {
         /// <summary>
         /// 冒泡排序法1
         /// </summary>
         /// <param name="list"></param>

          public static void BubbleSort(int[] list)
          {
              for (int i = 0; i < list.Length; i++)
              {
                  for (int j = i; j < list.Length; j++)
                  {
                      if (list[i] < list[j])
                      {
                         int temp = list[i];
                         list[i] = list[j];
                         list[j] = temp;
                     }
                 }
             }
         }

         /// <summary>
         /// 插入排序法
         /// </summary>
         /// <param name="list"></param>
         public static void InsertionSort(int[] list)
         {
             for (int i = 1; i < list.Length; i++)
              {
                 int t = list[i];
                 int j = i;
                 while ((j > 0) && (list[j - 1] > t))
                 {
                     list[j] = list[j - 1];
                     --j;
                 }
                 list[j] = t;
             }
         }

         <summary>
         /// 选择排序法
         /// </summary>
         /// <param name="list"></param>
         public static void SelectionSort(int[] list)
         {
             int min;
             for (int i = 0; i < list.Length - 1; i++)
             {
                 min = i;
                 for (int j = i + 1; j < list.Length; j++)
                 {
                     if (list[j] < list[min])
                         min = j;
                 }
                 int t = list[min];
                 list[min] = list[i];
                 list[i] = t;
             }
         }

        <summary>
        /// 希尔排序法
        /// </summary>
        /// <param name="list"></param>
        public static void ShellSort(int[] list)
        {
             int inc;
             for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
             for (; inc > 0; inc /= 3)
             {
                 for (int i = inc + 1; i <= list.Length; i += inc)
                 {
                     int t = list[i - 1];
                     int j = i;
                     while ((j > inc) && (list[j - inc - 1] > t))
                     {
                         list[j - 1] = list[j - inc - 1];
                         j -= inc;
                     }
                     list[j - 1] = t;
                 }
             }
         }

         private static void Swap(ref int l, ref int r)
         {
             int s;
             s = l;
             l = r;
             r = s;
         }

         /// 快速排序法
         /// </summary>
         /// <param name="list"></param>
         /// <param name="low"></param>
         /// <param name="high"></param>
         public static void Sort(int[] list, int low, int high)
         {
             int pivot;
             int l, r;
             int mid;
             if (high <= low)
                 return;
             else if (high == low + 1)
             {
                 if (list[low] > list[high])
                     Swap(ref list[low], ref list[high]);
                 return;
             }
             mid = (low + high) >> 1;
             pivot = list[mid];
             Swap(ref list[low], ref list[mid]);
             l = low + 1;
             r = high;
             do
             {
                 while (l <= r && list[l] < pivot)
                     l++;
                 while (list[r] >= pivot)
                     r--;
                 if (l < r)
                     Swap(ref list[l], ref list[r]);
             } while (l < r);
             list[low] = list[r];
             list[r] = pivot;
             if (low + 1 < r)
                 Sort(list, low, r - 1);
             if (r + 1 < high)
                 Sort(list, r + 1, high);
         }
     }
}

 

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
          string dates=DateDiff(Convert.ToDateTime(DateTime.Now.ToString("MM-dd-yyyy hh:mm:ss")),Convert.ToDateTime("09-07-2008 10:20:30"));
          Response.Write(Convert.ToDateTime(DateTime.Now.ToString("MM-dd-yyyy hh:mm:ss")));
          Response.Write(Convert.ToDateTime("09-07-2008 10:20:30"));
          Response.Write(dates);
        }
    }
    private string DateDiff(DateTime DateTime1, DateTime DateTime2)
    {
        string dateDiff = null;
        try
        {
            TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
            TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
            TimeSpan ts = ts1.Subtract(ts2).Duration();
            dateDiff = ts.Days.ToString() + "天"
                    + ts.Hours.ToString() + "小时"
                    + ts.Minutes.ToString() + "分钟"
                    + ts.Seconds.ToString() + "秒";
        }
        catch
        {

        }
        return dateDiff;
    }

 
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop
 
<body>
<div id=demo style=overflow:hidden;height:100%;width:570;color:#ffffff>
<table align=left cellpadding=0 cellspace=0 border=0>
<tr>
<td id=demo1 valign=top>
<img src="file:///E|/图片/友情连接/未标题-1.jpg" width="240" height="86" />
  <img src="file:///E|/图片/友情连接/logo.jpg" width="251" height="55" />
  <img src="file:///E|/图片/友情连接/hwpx_02.jpg" width="242" height="100" />
<img src="file:///E|/图片/友情连接/top.jpg" width="778" height="116" />
</td>
<td id=demo2 valign=top></td>
</tr>
</table>
</div>
<script>
var speed=10
demo2.innerHTML=demo1.innerHTML
function Marquee(){
if(demo2.offsetWidth-demo.scrollLeft<=0)
demo.scrollLeft-=demo1.offsetWidth
else{
demo.scrollLeft++
}
}
var MyMar=setInterval(Marquee,speed)
demo.οnmοuseοver=function() {clearInterval(MyMar)}
demo.οnmοuseοut=function() {MyMar=setInterval(Marquee,speed)}
</script>
</body>
<ml>
 
http://blog.csdn.net/gasx/archive/2006/06/27/842846.aspx
 
软件测试的基本方法

  软件测试方法在不同的书籍中可能有不同的分类,不同的叫法和不同的解释。比如,

       1.从测试人员角度看,可分为手动测试和自动测试。

       2. 从源代码的角度可分为单元测试和功能测试。

       3.从理论定义来分,可分为黑箱测试,白箱测试和灰箱测试。

        这里要讨论的基本软件测试方法主要侧重于软件功能的黑箱测试方法:功能测试(Functionality Test),可接受性测试(Acceptance Test),用户界面(User interface或UI)测试,Ad hoc一般指‘探讨或开放’型测试,边界条件测试(Boundary Condition),性能测试(Performance Test),回归测试(Regression Test),强力测试(Stress Test),配置和安装测试(Configuration and Setup Test),兼容性测试(Comparability Test),国际化支持测试(International Sufficiency)以及本地化语言测试(Localization)。  

      功能测试:验证测试软件功能能否正常按照它的设计工作。看运行软件时的期望行为是否符合原设计。比如,测试Microsoft Excel插入->符号的功能包括测试能够在Microsoft Excel所选单元格中正确地插入符号并且显示正确符号?能否正确显示使用不同的字体的符号?

  可接受性测试:是在把测试的版本交付测试部门大范围测试以前进行的对最基本功能的简单测试。因为在把测试的版本交付测试部门大范围测试以前应该先验证该版本对于所测试的功能基本上比较稳定。必须满足一些最低要求。比如不会很容易程序就挂起或崩溃。如果一个新版本没通过可测试性的验证,就应该阻拦测试部门花时间在该测试版本上测试。同时还要找到造成该版本不稳定的主要缺陷并督促尽快加以修正。

  用户界面测试:分析软件用户界面的设计是否合乎用户期望或要求。它常常包括菜单,对话框及对话框上所有按钮,文字,出错提示,帮助信息(Menu 和Help content)等方面的测试。比如,测试Microsoft Excel中插入符号功能所用的对话框的大小,所有按钮是否对齐,字符串字体大小,出错信息内容和字体大小,工具栏位置/图标等等。

  ‘探索或开放’型的测试:不是按部就班的按照一个又一个正式的测试用例来进行,也不局限于测试用例特定的步骤。这种测试是测试人员在理解该软件功能的基础上运用灵活多样的想象力和创造力去模拟用户的需求来使用该软件的多种功能。通常涉及很多的测试用例或者通过更复杂的步骤来使用该软件。

  边界条件测试:是环绕边界值的测试。通常意味着测试软件各功能是否能正确处理最大值,最小值或者所设计软件能够处理的最长的字符串等等。

  性能测试是:通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。或者执行同样任务时新版本不比旧版本慢。一般还检查系统记忆容量在运行程序时会不会流失(memory leak)。比如,验证程序保存一个巨大的文件新版本不比旧版本慢。

  回归测试:根据修复好了的缺陷再重新进行的测试。目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。通常确定所需的再测试的范围时是比较困难的,特别当临近产品发布日期时。因为为了修正某缺陷时必需更改源代码,因而就有可能影响这部分源代码所控制的功能。所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。因此应当鼓励对所有回归测试用例进行自动化。

  强力测试:它通常验证软件的性能在各种极端的环境和系统条件下是否还能正常工作。或者说是验证软件的性能在各种极端环境和系统条件下的承受能力。比如,在最低的硬盘驱动器空间或系统记忆容量条件下,验证程序重复执行打开和保存一个巨大的文件1000次后也不会崩溃或死机。

  集成与兼容性测试:验证该功能能够如预期的那样与其他程序或者构件协调工作。兼容性经常意味着新旧版本之间的协调,也包括测试的产品与其它产品的兼容使用。比如用同样产品的新版本时不影响与用旧版本用户之间保存文件,格式,和其他数据等操作。

  装配/安装/配置测试:验证软件程序在不同厂家的硬件上,所支持的不同语言的新旧版本平台上,和不同方式安装的软件都能够如预期的那样正确运行。比如,把英文版的 Microsoft Office 2003安装在韩文版 的Windows Me 上,再验证所有功能都正常运行。

  国际化支持测试:验证软件程序在不同国家或区域的平台上也能够如预期的那样运行,而且还可以按照原设计尊重和支持使用当地常用的日期,字体,文字表示,特殊格式等等。比如,用英文版的 Windows XP 和 Microsoft Word 能否展示阿拉伯字符串?用阿拉伯版的 Windows XP 和 阿拉伯版的Microsoft Word 能否展示阿拉伯字符串?又比如,日文版的Microsoft Excel对话框是否显示正确翻译的日语?一旦来说执行国际化支持测试的测试人员往往需要基本上了解这些国家或地区的语言要求和期望行为是什么。

  本地化语言测试:要验证所有已计划要发布的不同语言版本软件如预期的那样被正确地翻译成当地语言。这类测试一般包括验证菜单,对话框,出错信息,帮助内容等所有用户界面上的文字都能够显示正确翻译好的当地文字。

  阅读关于 软件测试 基本概念 基本方法 的全部文章

 
http://se.csai.cn/testweb/200702050953591782.htm
 
 随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的 网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时,容易发生服务器响应速度变慢甚至服务中断。为了避免这种情况,需要一种能够真实模拟大量用户访问Web应用系统的性能测试工具进行压力测试,来测试静态HTML页面的响应时间,甚至测试动态网页(包括ASP、PHP、JSP等)的响应时间,为服务器的性能优化和调整提供数据依据。

  我推荐各位Web 2.0开发测试人员使用Microsoft 的Web Application Stress Tool这个工具软件,这个微软提供的小工具仅9.58M,很小巧且实用。虽然功能上比不了专业的LoadRunner,但LoadRunner体积庞大,价格不菲,一般的企业也不会花那么多钱去购买LoadRunner,而微软的WAS则是完全免费,并且主要的功能都有,够用就行。

  Microsoft Web Application Stress Tool能有效测试一个网站的负载性能,这个软件可以通过脚本模拟100个强并发用户的访问,并模拟实际用户的一些点击操作,WAS还可以连接上远程Windows网站服务器的性能计数器(Performance Counter),通过对服务器性能(CPU/内存等)的性能分析来找到系统的瓶颈。CPU使用百分比反映了处理器开销,CPU使用百分比持续地超过75%是性能瓶颈在于处理器的一个明显的迹象。

  每次测试运行结束后WAS会生成详细的报表,WAS报表可以从View菜单选择Reports查看。

  另外,CSDN也总结了一些其他的测试工具,包括性能测试工具和功能测试工具,前十大测试工具排名如下:

 

  业级自动化测试工具WinRunner---功能测试

  Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。

 

  功能测试工具SilkTest--功能测试

  Borland SilkTest 2006属于软件功能测试工具,是Borland公司所提出软件质量管理解决方案的套件之一。这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。

 

   功能测试工具Rational Robot --功能测试

  IBM Rational Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面 IBM Rational TestManager 上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。

 

  功能和性能测试的工具JMeter  

     JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。

 

  性能测试和分析工具WEBLODE---性能测试(压力测试)

  webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。

 

  工业标准级负载测试工具Loadrunner---性能测试(压力测试)

  LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。

 

     性能测试工具WAS ---性能测试(压力测试)

  Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。

 

  全球测试管理系统testdirector

  TestDirector 是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。

 

    单元测试工具xUnit系列

  目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit (Delphi ),NUnit(.net),PhpUnit(Php )等等。该测试框架的第一个和最杰出的应用就是由Erich Gamma (《设计模式》的作者)和Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的JUnit.

 

  自动化白盒测试工具Jtest

  Jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。parasoft同时出品的还有C++ test,是一款C/C++白盒测试工具。

 
 我不是为了失败才来到这个世界上的,我的血管里也没有失败的血液在流动。我不愿意听失意者的哭泣,抱怨者的牢骚,这是羊群中的瘟疫。

  在我的字典里没有不可能、行不通、办不到、没希望、失败、放弃……的愚蠢的字眼。我要把每一天的奋斗,就象冲洗高山的雨滴,侵吞猛虎的蚂蚁,普照大地的星辰,建盖金字塔的奴隶,我也要一砖一瓦地构造自己成功的殿堂。

  我相信滴水穿石的道理,我相信古老的成功法则,每失败一次,就等于走向成功一次。这一次的拒绝就是下一次的赞同,这一次皱起的眉头就是下一次舒展的笑容。今天的不幸,往往预示着明天的好运。  当夜幕降临,我回想一天的遭遇,我总是心存感激。当我精疲力竭时,我要抵制回家贪图享受的诱惑;当我在遭人拒绝时,我一试再试,直到每一次的成功。

  我不因昨日的成功而满足,这是失败的先兆。我也不因昨日的失败感到气馁。

  我深信,只要生命不息,就要坚持到底。

 
http://www.cnblogs.com/yank/archive/2008/08/14/1267746.html
 
http://www.cnblogs.com/hangxin1940/archive/2008/04/17/1158664.html
 

1.注意sql语句:是检索整个表的所有数据

select * from tbtest

2. 用SqlCommandBuilder 实现批量更新

3.什么时候用?

    a. 有时候需要缓存的时候,比如说在一个商品选择界面,选择好商品,并且进行编辑/删除/更新后,

       最后一并交给数据库,而不是每一步操作都访问数据库,因为客户选择商品可能进行n次编辑/删除

       更新操作,如果每次都提交,不但容易引起数据库冲突,引发错误,而且当数据量很大时在用户执行

       效率上也变得有些慢

    b.有的界面是这样的有的界面是这样的,需求要求一定用缓存实现,确认之前的操作不提交到库,点击

      页面专门提交的按钮时才提交商品选择信息和商品的其它信息. 我经常遇到这样的情况

    c.有些情况下只往数据库里更新,不读取. 也就是说没有从数据库里读,SqlDataAdapter也就不知道是
    
      更新哪张表了,调用Update就很可能出错了。这样的情况下可以用SqlCommandBuilder 了.
        

4.
 注意点:
  1.只能更新一个表,如果此数据集是从两个或者两个以上的表关联而来的,则不能用此方法自动更新
  2.表中必须设置主键
  3.更新的表中字段不能有image类型的

5.优点:

    节省代码量,节省时间,这个方法可以代替所有的:  更新/删除/插入操作语句

6.缺点:
        访问两次数据库(select * TableName,就是这句,要确认是哪个表,除非是很大的数据量,
        一般是感觉不到的),效率稍微有些慢

 

  1.功能:

   可以实现你对DataSet在UI层做任意操作后,直接丢给这个方法,这个方法就可以自动把你的修改更 新到数 据库中,而没必要每次都更新到

   数据库

  2.使用方法
  public DataSetUpdateByDataSet(DataSet ds,string strTblName,string strConnection)
  {
      SqlConnection  conn = new SqlConnection(strConnection));
        
     SqlDataAdapter myAdapter = new SqlDataAdapter();
     SqlCommand myCommand = new SqlCommand("select * from "+strTblName),(SqlConnection) conn);   
     myAdapter.SelectCommand = myCommand;
     SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);    
  try

      {  

               lock(this)            //处理并发情况(分布式情况)

              {

               myAdapter.Update(ds,strTblName); 

              }

      }  
 
  catch(Exception err)
 {

   conn.Close();   
   throw new BusinessException(err);
 }

    return ds;    //数据集的行状态在更新后会都变为: UnChange,在这次更新后客户端要用返回的ds

}

public DataSet UpdateByDataSet(DataSet ds,string strTblName,string strConnection)
  {
   
  
      SqlConnection  conn = new SqlConnection(strConnection));         
      SqlCommand myCommand = new SqlCommand("select * from "+strTblName),(SqlConnection) conn);   

      SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand );   

      SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);     
      
      myAdapter.InsertCommand = myCommandBuilder .GetInsertCommand();

      myAdapter.UpdateCommand = myCommandBuilder .GetUpdateCommand();

     myAdapter.DeleteCommand = myCommandBuilder .GetDeleteCommand();

   try

  {

        lock(this)                              //处理并发情况(分布式情况)

       {

              conn.Open();

              myAdapter.Update(ds,strTblName);  

              conn.Close();

       }
  
         return ds;    //数据集的行状态在更新后会都变为: UnChange,在这次更新后客户端要用返回的ds }
 catch(Exception err)
 { 

      conn.Close(); 
      throw new BusinessException(err);
 }
}

Private Sub UseCommandBuilder()
  Dim connectionString As String = _
  "Integrated Security=SSPI;Persist Security Info=False;" + _
  "Initial Catalog=Northwind;Data Source=LAP800"
  Dim connection As SqlConnection = _
  New SqlConnection(connectionString)
  connection.Open()
  Try
  Dim command As SqlCommand = _
  New SqlCommand("SELECT * FROM Customers", connection)

  Dim adapter As SqlDataAdapter = _
  New SqlDataAdapter(command)
  Dim builder As SqlCommandBuilder = _
  New SqlCommandBuilder(adapter)
  ' Show commands
  Console.WriteLine(builder.GetInsertCommand().CommandText)
  Console.WriteLine(builder.GetUpdateCommand().CommandText)
  Console.WriteLine(builder.GetDeleteCommand().CommandText)

  Dim table As DataTable = New DataTable
  adapter.Fill(table)

  'Use Insert
  Dim row As DataRow = table.NewRow
  row("CustomerID") = "PAULK"
  row("CompanyName") = "Pauly's Edibles"
  row("ContactName") = "Paul Kimmel"
  row("ContactTitle") = "The Fat Man"
  table.Rows.Add(row)

  'Use Update
  Dim results() As DataRow = _
  table.Select("CustomerID = 'ALFKI'")
  results(0)("Region") = "DE"

  'Use Delete
  Dim deleteThese() As DataRow = _
  table.Select("CustomerID = 'FARLA'")
  For Each row In deleteThese
  row.Delete()
  Next

  adapter.Update(table)
  table.AcceptChanges()

  Catch ex As Exception
  Debug.WriteLine(ex.Message)
  Throw
  Finally
  connection.Close()
  End Try
  End Sub

  End Module

 

 

//(记住这个xml文件不能在客户端保存哦,可以放到一个hiddenFile里)

function CreateXmls()
{
    var rowsArray = document.all('tblList').rows;//得到这个表的所有行
    var  oxml=new ActiveXObject("Microsoft.XMLDOM"); //创建一个xml对象  
    oxml = document.createElement("Data");//创建一个"data"元素<data></data>

     for(var i=1;i<rowsArray.length;i++)
     {
        if(rowsArray[i].cells[1]==null||rowsArray[i].cells[3]==null||rowsArray[0].cells[2]==null)break;
        oItem = oxml.appendChild(document.createElement("Item"));//创建Item元素并把它做为data的子节点
        ItemId = oItem.appendChild(document.createElement("ItemId"));//创建ItemId元素并把它做为Item的子节点
        ItemName = oItem.appendChild(document.createElement("ItemName"));"));//创建ItemName 元素并把它做为Item的子节点

        ItemType = oItem.appendChild(document.createElement("ItemType"));//创建ItemType元素并把它做为Item的子节点
        ItemId.appendChild(document.createTextNode(rowsArray[i].cells[2].innerText));//创建文本节点并把它做为ItemId的子节点
        ItemName.appendChild(document.createTextNode(rowsArray[i].cells[3].innerText));
        ItemType.appendChild(document.createTextNode(rowsArray[i].cells[1].innerText));
     }

    //rowsArray[i].cells[2].innerText:表示当前行的第三列的innerText值
    var hidValue=document.getElementById("ctl00_ContentPlaceHolder1_hidXmlString");
    hidValue.value= oxml.outerHTML;
  }    

//*innerHTML ,...区别

innerHTML 设置或获取位于对象起始和结束标签内的 HTML
outerHTML 设置或获取对象及其内容的 HTML 形式
innerText 设置或获取位于对象起始和结束标签内的文本
outerText 设置(包括标签)或获取(不包括标签)对象的文本
innerText 和outerText 在读取得时候是一样的,只是在设置的时候outerText 会连带标签一起替换成目标文本
firefox不支持innerText ,但是可以用textContent作为替代方案。

//测试

<div id="div"><font color="green"><h2>This is a DIV!</h2></font></div>
<input name="innerHTML" value="innerHTML" type="button" OnClick="alert(div.innerHTML);">//结果:"><font color="green"><h2>This is a DIV!</h2></font>


<input name="outerHTML" value="outerHTML" type="button" OnClick="alert(div.outerHTML);">//结果:<div id="div"><font color="green"><h2>This is a DIV!</h2></font></div>

<input name="innerText" value="innerText" type="button" OnClick="alert(div.innerText);">
<input name="outerText" value="outerText" type="button" OnClick="alert(div.outerText);">

*/

//创建出来的xml

<data>

  <item>

    <itemId>1</itemId>

    <ItemName>ff</ItemName>

    <ItemType>1</ItemType>

  <item>

 

  <item>

    <itemId>1</itemId>

    <ItemName>ff</ItemName>

    <ItemType>1</ItemType>

  <item>

.......

</data>

 

 

//服务器端读xml保存到数据库:

protected void saveXmlTodatabase()

{

       string xmlString = this.hidXmlString.Value.Trim();  //从hiddenbutton里将xml取出来
 
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xmlString);//加载成一个xml文件
        XmlNodeList rootList = doc.SelectSingleNode("Data").ChildNodes;
        Dictionary promotion = new Dictionary();
        bool flag = false;

        foreach (XmlNode xFNode in rootList)
        {
            XmlElement xe1 = (XmlElement)xFNode;
            XmlNodeList xItemList=xe1.ChildNodes;//继续获取xe子节点的所有子节点
            foreach (XmlNode xNnode in xItemList)
            {
              
                XmlElement xe = (XmlElement)xNnode; 
              
                if (xe.Name.ToLower() == "itemid")
                {
                    promotion["promo_rank"] = xe.InnerText;
                }
                if (xe.Name.ToLower() == "itemname")
                {
                    promotion["promo_name"] = xe.InnerText;
                }
                if (xe.Name.ToLower() == "itemtype")
                {
                    promotion["promo_type"] = xe.InnerText;
                }
            }
           flag=BLLSales.AddOrUpdatePromotionByRank(promotion, Enums.DataAccessMode.Update);
        }

}
 

 

http://sunxboy.javaeye.com/blog/191652

 

 

2008 - 05 - 10

用javascript实现行的上下移动

关键字: 行 移动
Html代码 复制代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <html>  
  3. <head>  
  4. <title>Table test</title>  
  5. <style type="text/css">  
  6. <!--  
  7. td  { text-align:center;font-size:12px;padding:3px;}  
  8. -->  
  9. </style>  
  10. </head>  
  11. <body>  
  12. <table id="table1" bordercolor="#000000" width="200" border="1">  
  13.     <tbody>  
  14.         <tr>  
  15.             <td width="25%">1</td>  
  16.             <td width="25%">11</td>  
  17.    <!--使用javascript:void(0)是为了能够传递this参数到事件处理程序-->  
  18.             <td width="25%"><a href="javascript:void(0)" onclick="moveUp(this)">上移</a></td>  
  19.             <td width="25%"><a href="javascript:void(0)" onclick="moveDown(this)">下移</a></td>  
  20.         </tr>  
  21.         <tr>  
  22.             <td>2</td>  
  23.             <td>22</td>  
  24.             <td><a href="javascript:void(0)" onclick="moveUp(this)">上移</a></td>  
  25.             <td><a href="javascript:void(0)" onclick="moveDown(this)">下移</a></td>  
  26.         </tr>  
  27.         <tr>  
  28.             <td>3</td>  
  29.             <td>33</td>  
  30.             <td><a href="javascript:void(0)" onclick="moveUp(this)">上移</a></td>  
  31.             <td><a href="javascript:void(0)" onclick="moveDown(this)">下移</a></td>  
  32.         </tr>  
  33.         <tr>  
  34.             <td>4</td>  
  35.             <td>44</td>  
  36.             <td><a href="javascript:void(0)" onclick="moveUp(this)">上移</a></td>  
  37.             <td><a href="javascript:void(0)" onclick="moveDown(this)">下移</a></td>  
  38.         </tr>  
  39.         <tr>  
  40.             <td>5</td>  
  41.             <td>55</td>  
  42.             <td><a href="javascript:void(0)" onclick="moveUp(this)">上移</a></td>  
  43.             <td><a href="javascript:void(0)" onclick="moveDown(this)">下移</a></td>  
  44.         </tr>  
  45.     </tbody>  
  46. </table>  
  47. </body>  
  48. </html>  
  49.   
  50. <script language="JavaScript" type="text/javascript">  
  51. <!--   
  52. function cleanWhitespace(element) {   
  53.  //遍历element的子结点   
  54.  for (var i = 0; i < element.childNodes.length; i++) {   
  55.   var node = element.childNodes[i];   
  56.   //判断是否是空白文本结点,如果是,则删除该结点   
  57.   if (node.nodeType == 3 && !//S/.test(node.nodeValue))    
  58.   node.parentNode.removeChild(node);   
  59.  }   
  60. }   
  61. //获得表格对象   
  62. var _table=document.getElementById("table1");   
  63. cleanWhitespace(_table);   
  64. //使表格行上移,接收参数为链接对象   
  65. function moveUp(_a){   
  66.  //通过链接对象获取表格行的引用   
  67.  var _row=_a.parentNode.parentNode;   
  68.  //如果不是第一行,则与上一行交换顺序   
  69.  if(_row.previousSibling)swapNode(_row,_row.previousSibling);   
  70. }   
  71. //使表格行下移,接收参数为链接对象   
  72. function moveDown(_a){   
  73.  //通过链接对象获取表格行的引用   
  74.  var _row=_a.parentNode.parentNode;   
  75.  //如果不是最后一行,则与下一行交换顺序   
  76.  if(_row.nextSibling)swapNode(_row,_row.nextSibling);   
  77. }   
  78. //定义通用的函数交换两个结点的位置   
  79. function swapNode(node1,node2){   
  80.  //获取父结点   
  81.  var _parent=node1.parentNode;   
  82.  //获取两个结点的相对位置   
  83.  var _t1=node1.nextSibling;   
  84.  var _t2=node2.nextSibling;   
  85.  //将node2插入到原来node1的位置   
  86.  if(_t1)_parent.insertBefore(node2,_t1);   
  87.  else _parent.appendChild(node2);   
  88.  //将node1插入到原来node2的位置   
  89.  if(_t2)_parent.insertBefore(node1,_t2);   
  90.  else _parent.appendChild(node1);   
  91. }   
  92. //-->  
  93. </script>  
 
  • Ed86285e-a1df-30e2-bf2a-44df5eb9e40e-thumb
  • 描述: 行的移动,兼容IE/Firefox
  • 大小: 2 KB
 
<%#Container.ItemIndex %>
 

 

SqlCommand对象
2006年10月15日 星期日 18:03

这节课描述了SqlCommand对象以及如何使用它与数据库交互。下面是本课的目标:

知道什么是command对象

学习如何使用ExecuteReader方法查询数据

学习如何使用ExecuteNonQuery方法插入和删除对象

学习如何使用EXecuteScalar方法返回单一值

介绍

SqlCommand对象允许你指定在数据库上执行的操作的类型。比如,你能够对数据库中的行数据执行select,insert,modify以及delete命令。SqlCommand对象能被用来支持断开连接数据管理的情况,但是在这节课我们将只单独使用SqlCommand对象。后面关于SqlDataAdapter的课程将解释如何使用断开数据实现应用程序。这节课将同时展示如何从数据库中返回一个单独的值,比如表中记录的数量。

创建SqlCommand对象

SqlCommand cmd = new SqlCommand("select CategoryName from Categories", conn);

上面一行是典型的实例化SqlCommand对象的代码。它使用一个string参数来保存你想要执行的命令以及一个关于SqlConnection对象的引用。SqlCommand具有重载形式,这些形式你将在以后的示例中看到。

查询数据

当使用SQL的select命令,会得到一组数据集。为了和SqlCommand对象配合使用,你应该使用ExecuteReader方法,它返回一个SqlDataReader对象。我们将在后面的内容讨论SqlDataReader。下面的例子显示了如何使用SqlCommand对象来得到SqlDataReader对象:

// 1. Instantiate a new command with a query and connection

SqlCommand cmd = new SqlCommand("select CategoryName from Categories", conn);

// 2. Call Execute reader to get query results

SqlDataReader rdr = cmd.ExecuteReader();

在上面的示例中,我们通过传递命令字符串核连接对象到构造函数的方式实体化了SqlCommand对象。然后我们通过SqlCommand对象cmd调用ExecuteReader方法得到了SqlDataReader对象。

这些代码是表1中ReadData方法的一部分,我们将在后面集中介绍。

插入数据

要对数据库插入数据,使用SqlCommand对象的ExecuteNonQuery方法。下面的代码显示了如何向数据库表插入数据: 

 string insertString = @"insert into Categories(CategoryName, Description)values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')";

 SqlCommand cmd = new SqlCommand(insertString, conn);

 cmd.ExecuteNonQuery();

SqlCommand的实例化过程与以前看到的有一些区别,但是基本一致。在构造函数的第一个字符串参数中是用的是插入字符串变量而不三字符串字面值。该变量在SqlCommand声明之前被声明了。

注意在insertString文本中“doesn’’t”的两个单引号(’’)。这是将它转义为适当的单引号。

另外一个需要注意的是我们显式指明了列:CategoryName和Description。列表中有一个主键名为CategoryID。我们忽略这列因为SQL Server将自动添加此字段。试图对主键比如CategoryID添加值会产生异常。

为了执行此命令,我们简单的对SqlCommand实体cmd调用ExecuteNonQuery方法。

这段代码是表1中InsertData方法的一部分,我们将在后面集中介绍。

更新数据

ExecuteNonQuery方法同样用来更新数据。下面的代码显示了如何更新数据:

 string updateString = @"update Categories set CategoryName = 'Other'

     where CategoryName = 'Miscellaneous'";

 SqlCommand cmd = new SqlCommand(updateString);

 cmd.Connection = conn;

 cmd.ExecuteNonQuery();


删除数据

你同样能够使用ExecuteNonQuery方法删除数据。下面的例子说明了如何使用EXecuteNonQuery方法删除数据库中的记录。 

 string deleteString = @"delete from Categories where CategoryName = 'Other'";

 SqlCommand cmd = new SqlCommand();

 cmd.CommandText = deleteString;

 cmd.Connection = conn;

 cmd.ExecuteNonQuery();

这个示例使用了没有参数的SqlCommand构造函数。取而代之的是显式地设置了CommandText和SqlCommand对象的连接属性。

我们同样能够使用SqlCommand构造函数在前面的两个重载形式——用来插入或者更新命令——得到相同的结果。它说明了在任何时候既能够改变命令文本又能够改变连接对象。

ExecuteNonQuery方法调用将命令传递给数据库。

得到单一值

某些时候你想从数据库中只取一个值,它可能是关于数据集的计数、和、平均值或者其他聚合数值。使用ExecuteReader方法并计算代码中的结果并不是做这些事情的有效方式。最好的选择就是让数据库能够执行并且只返回你所需要的单独的值。下面的示例说明了如何使用ExecuteScalar方法来实现:

 SqlCommand cmd = new SqlCommand("select count(*) from Categories", conn);

  int count = (int)cmd.ExecuteScalar(); 

总结

SqlCommand对象允许你擦许并对数据库传送命令。它含有针对不同的命令而特定的方法。ExecuteReader方法返回SqlDataReader对象来现实查询的结果。对于insert,update以及delete这些SQL命令,使用ExecuteNonQuery(非查询语句)方法。如果你只需要查询的单独聚集值,ExecuteScalar方法是最好的选择

 
 

    1.public static SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
    {
        SqlParameter param;

        if (Size > 0)
            param = new SqlParameter(ParamName, DbType, Size);
        else
            param = new SqlParameter(ParamName, DbType);

        param.Direction = Direction;
        if (!((Direction == ParameterDirection.Output || Direction == ParameterDirection.ReturnValue) && Value == null))
        {
            param.Value = Value;
        }

        return param;
    }

   2.使用

        SqlParameter[] sqlPrm ={
            new SqlParameter("@memberID", userID),
            new SqlParameter("@appID", appID),
            new SqlParameter("@Type", type),
            new SqlParameter("@Name", name),
            Util.MakeParam("@IsDuplicate",SqlDbType.Bit,1,ParameterDirection.Output,null)
        };

 

    

2.sql 分页

   注意:首先要得到pageSize,pageIndex

   select * from

      (

           select top pageSize * from

               (

                  select top pageSize*pageIndex from Test order by id desc

               )

            as A order by id desc

      )

   Test

 select top  20*4的方式在SQL中取前80条记录,你会失败,因为TOP子句有一个限制,就是TOP num中的num不能是一个计算值或表达式而必须是一个既定的常量-------------------------------------------------------------------------------

  declare @count int

 set @count =2*10

   select * from

      (

           select top 2* from

               (

                  select top @count from Test order by id desc

               )

            as A order by id desc

      )

   Test

 

 

http://files.cnblogs.com/tinachang021/aspnentpager.rar  

2.AspnetPage控件使用分页

   1。在sql语句中没有进行分页的情况

        注意使用这个控件的时候,一定要个  this.AspNetPager1.RecordCount 赋值哦,不然这个控件将不显示。

         RecordCount 是总记录数,(数据库里检索出来的所有记录数)。。。 

         StartIndex=this.AspNetPager1.PageSize * (this.AspNetPager1.CurrentPageIndex - 1)

         EnedIndex=this.AspNetPager1.PageSize

          详情看源码:

              


 1    private DataTable  LoadLocation()
 2    {
 3        int totalCount = 0;
 4        DataSet ds = new DataSet();
 5        int pageIndex = Util.ConvertTo<int>(Request.QueryString["page"], 0);
 6        if (pageIndex > 0)
 7        {
 8            AspNetPager1.CurrentPageIndex = pageIndex;
 9        }

10        ds = BLLMemberLocation.GetMemberLocation(this.AspNetPager1.PageSize * (this.AspNetPager1.CurrentPageIndex - 1), this.AspNetPager1.PageSize, out totalCount);
11        this.AspNetPager1.RecordCount = totalCount;
12
13        if (totalCount <= this.AspNetPager1.PageSize)
14        {
15            this.AspNetPager1.Visible = false;
16        }

17        else
18        {
19
20            this.AspNetPager1.Visible = true;
21        }

22
23        if (ds != null)
24        {
25
26            this.repMyInfo.DataSource = ds;
27            this.repMyInfo.DataBind();
28        }

29        return null;
30      
31    }

32
33 public static DataSet GetMemberLocation(int pageindex, int pagesize, out int totalCount)
34    {
35        DataSet ds = new DataSet();
36        using (SqlConnection myConnection = new SqlConnection(connString))
37        {
38            SqlCommand sqlcmd = new SqlCommand("app_GetMemLocation", myConnection);
39            sqlcmd.CommandType = CommandType.StoredProcedure;
40            sqlcmd.Parameters.Add("@MemberID", SqlDbType.UniqueIdentifier);
41            sqlcmd.Parameters["@MemberID"].Value = userID;
42            ds = Util.GetPagedRecords(myConnection, sqlcmd, pageindex, pagesize, out totalCount);
43            myConnection.Close();
44        }

45       
46        return ds;
47    }

48 public static DataSet GetPagedRecords(SqlConnection myConnection, SqlCommand sqlcmd, int pageIndex, int pageSize, out int totalRecords)
49    {
50        int StartRecord = pageIndex;
51        int MaxRecords = pageSize;
52
53        if (pageIndex < 0)
54            throw new ArgumentException("PageIndex cannot be negative");
55        if (pageSize < 1)
56            throw new ArgumentException("PageSize must be positive");
57
58        long lBound = (long)pageIndex * pageSize;
59        long uBound = lBound + pageSize - 1;
60
61        if (uBound > System.Int32.MaxValue)
62        {
63            throw new ArgumentException("PageIndex too big");
64        }

65        myConnection.Open();
66        DataSet ds = new DataSet();
67        DataTable dt = new DataTable();
68        using (SqlDataAdapter adapter = new SqlDataAdapter(sqlcmd))
69        {
70            adapter.Fill(dt);
71            totalRecords = dt.Rows.Count;
72            dt.Clear();
73            adapter.Fill(ds, StartRecord, MaxRecords, "tbName");
74       }

75
76        myConnection.Close();
77        return ds;
78    }

 

这里还要注意哦。。。adapter.Fill(ds.startrecord,maxrecord,"tbName")//它也是取的是当前页的数据

    例如:startRecord=0,maxrecord=10

   那它取的是0-10这10条数据

                 10-20

                  20-30

                 .。。。。

 

时还要注意:AspNetPager控件它有url参数的哦:

         http://localhost:4849/AppointmentMaker/UserProfile/MemberLocation.aspx?page=2

           每次点击分页控件它将会把参数显示到url上:即page就是当前页

 

 

   2.在sql语句中进行分页的情况

  

 

   

 

 

<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />[/

 

http://www.iselong.com/online/ebooks/javascript/js_3.htm#window%20窗口对象

 

JavaScript 参考教程

档对象

现在我们将开始讨论更“实际”的话题——文档对象(DOM)。文档对象是指在网页文档里划分出来的对象。在 JavaScript 能够涉及的范围内有如下几个“大”对象:window, document, location, navigator, screen, history 等。下面是一个文档对象树,你可以看到对象下包含对象的“壮观”情景。要引用某个对象,就要把父级的对象都列出来。例如,要引用某表单“applicationForm”的某文字框“customerName”,就要用“document.applicationForm.customerName”。

下表中有些对象是全小写的,有些是以大写字母开头的。以大写字母开头的对象表示,引用该对象不使用下表列出的名字,而直接用对象的“名字”(Id 或 Name,下面有讲解),或用它所属的对象数组指定。

这里我们不准备讲解对象的“事件”,虽然我们也会列出对象所能响应的事件。我们将会在下一章“事件处理”中讲解事件。

navigator 浏览器对象 反映了当前使用的浏览器的资料。

属性

appCodeName 返回浏览器的“码名”(?),流行的 IE 和 NN 都返回 'Mozilla'。
appName
返回浏览器名。IE 返回 'Microsoft Internet Explorer',NN 返回 'Netscape'。
appVersion
返回浏览器版本,包括了大版本号、小版本号、语言、操作平台等信息。
platform
返回浏览器的操作平台,对于 Windows 9x 上的浏览器,返回 'Win32'(大小写可能有差异)。
userAgent
返回以上全部信息。例如,IE5.01 返回 'Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)'。
javaEnabled() 返回一个布尔值,代表当前浏览器允许不允许 Java。

screen 屏幕对象 反映了当前用户的屏幕设置。

属性

width 返回屏幕的宽度(像素数)。
height
返回屏幕的高度。
availWidth 返回屏幕的可用宽度(除去了一些不自动隐藏的类似任务栏的东西所占用的宽度)。
availHeight 返回屏幕的可用高度。
colorDepth 返回当前颜色设置所用的位数 - 1:黑白;8:256色;16:增强色;24/32:真彩色

window 窗口对象 最大的对象,它描述的是一个浏览器窗口。一般要引用它的属性和方法时,不需要用“window.xxx”这种形式,而直接使用“xxx”。一个框架页面也是一个窗口。

属性

name 窗口的名称,由打开它的连接(<a target="...">)或框架页(<frame name="...">)或某一个窗口调用的 open() 方法(见下)决定。一般我们不会用这个属性。
status 指窗口下方的“状态栏”所显示的内容。通过对 status 赋值,可以改变状态栏的显示。
opener 用法:window.opener;返回打开本窗口的窗口对象。注意:返回的是一个窗口对象。如果窗口不是由其他窗口打开的,在 Netscape 中这个属性返回 null;在 IE 中返回“未定义”(undefined)。undefined 在一定程度上等于 null。注意:undefined 不是 JavaScript 常数,如果你企图使用“undefined”,那就真的返回“未定义”了。
self 指窗口本身,它返回的对象跟 window 对象是一模一样的。最常用的是“self.close()”,放在<a>标记中:“<a href="javascript:self.close()">关闭窗口</a>”。
parent 返回窗口所属的框架页对象。
top 返回占据整个浏览器窗口的最顶端的框架页对象。
history 历史对象,见下
location 地址对象,见下
document 文档对象,见下

方法

open() 打开一个窗口。用法:open(<URL字符串>, <窗口名称字符串>, <参数字符串>);
  <URL字符串>:描述所打开的窗口打开哪一个网页。如果留空(''),则不打开任意网页。
  <窗口名称字符串>:描述被打开的窗口的名称(window.name),可以使用'_top'、'_blank'等内建名称。这里的名称跟“<a href="..." target="...">”里的“target”属性是一样的。
  <参数字符串>:描述被打开的窗口的样貌。如果只需要打开一个普通窗口,该字符串留空(''),如果要指定样貌,就在字符串里写上一到多个参数,参数之间用逗号隔开。

例:打开一个 400 x 100 的干净的窗口:
open('','_blank','width=400,height=100,menubar=no,toolbar=no,
location=no,directories=no,status=no,scrollbars=yes,resizable=yes')

参数

top=#窗口顶部离开屏幕顶部的像素数
left=#窗口左端离开屏幕左端的像素数
width=#窗口的宽度
height=#窗口的高度
menubar=...窗口有没有菜单,取值yes或no
toolbar=...窗口有没有工具条,取值yes或no
location=...窗口有没有地址栏,取值yes或no
directories=...窗口有没有连接区,取值yes或no
scrollbars=...窗口有没有滚动条,取值yes或no
status=...窗口有没有状态栏,取值yes或no
resizable=...窗口给不给调整大小,取值yes或no

open() 方法有返回值,返回的就是它打开的窗口对象。所以,

var newWindow = open('','_blank');

这样把一个新窗口赋值到“newWindow”变量中,以后通过“newWindow”变量就可以控制窗口了。

close() 关闭一个已打开的窗口。
用法:window.close() 或 self.close():关闭本窗口;
   <窗口对象>.close():关闭指定的窗口。
  如果该窗口有状态栏,调用该方法后浏览器会警告:“网页正在试图关闭窗口,是否关闭?”然后等待用户选择是否;如果没有状态栏,调用该方法将直接关闭窗口。
blur()
 使焦点从窗口移走,窗口变为“非活动窗口”。
focus()
 是窗口获得焦点,变为“活动窗口”。不过在 Windows 98,该方法只能使窗口的标题栏和任务栏上的相应按钮闪烁,提示用户该窗口正在试图获得焦点。
scrollTo()
 用法:[<窗口对象>.]scrollTo(x, y);使窗口滚动,使文档从左上角数起的(x, y)点滚动到窗口的左上角。
scrollBy()
 用法:[<窗口对象>.]scrollBy(deltaX, deltaY);使窗口向右滚动 deltaX 像素,向下滚动 deltaY 像素。如果取负值,则向相反的方向滚动。
resizeTo()
 用法:[<窗口对象>.]resizeTo(width, height);使窗口调整大小到宽 width 像素,高 height 像素。
resizeBy()
 用法:[<窗口对象>.]resizeBy(deltaWidth, deltaHeight);使窗口调整大小,宽增大 deltaWidth 像素,高增大 deltaHeight 像素。如果取负值,则减少。
alert() 用法:alert(<字符串>);弹出一个只包含“确定”按钮的对话框,显示<字符串>的内容,整个文档的读取、Script 的运行都会暂停,直到用户按下“确定”。
confirm() 用法:confirm(<字符串>);弹出一个包含“确定”和“取消”按钮的对话框,显示<字符串>的内容,要求用户做出选择,整个文档的读取、Script 的运行都会暂停。如果用户按下“确定”,则返回 true 值,如果按下“取消”,则返回 false 值。
prompt() 用法:prompt(<字符串>[, <初始值>]);弹出一个包含“确认”“取消”和一个文本框的对话框,显示<字符串>的内容,要求用户在文本框输入一些数据,整个文档的读取、Script 的运行都会暂停。如果用户按下“确认”,则返回文本框里已有的内容,如果用户按下“取消”,则返回 null 值。如果指定<初始值>,则文本框里会有默认值。

事件

onload; onunload; onresize; onblur; onfocus; onerror

history 历史对象 历史对象指浏览器的浏览历史。鉴于安全性的需要,该对象收到很多限制,现在只剩下下列属性和方法。

属性

length 历史的项数。JavaScript 所能管到的历史被限制在用浏览器的“前进”“后退”键可以去到的范围。本属性返回的是“前进”和“后退”两个按键之下包含的地址数的和。

方法

back() 后退,跟按下“后退”键是等效的。
forward()
前进,跟按下“前进”键是等效的。
go() 用法:history.go(x);在历史的范围内去到指定的一个地址。如果 x < 0,则后退 x 个地址,如果 x > 0,则前进 x 个地址,如果 x == 0,则刷新现在打开的网页。history.go(0) 跟 location.reload() 是等效的。

location 地址对象 它描述的是某一个窗口对象所打开的地址。要表示当前窗口的地址,只需要使用“location”就行了;若要表示某一个窗口的地址,就使用“<窗口对象>.location”。

注意 属于不同协议或不同主机的两个地址之间不能互相引用对方的 location 对象,这是出于安全性的需要。例如,当前窗口打开的是“www.a.com”下面的某一页,另外一个窗口(对象名为:bWindow)打开的是“www.b.com”的网页。如果在当前窗口使用“bWindow.location”,就会出错:“没有权限”。这个错误是不能用错误处理程序(Event Handler,参阅 onerror 事件)来接收处理的。

属性

protocol 返回地址的协议,取值为 'http:','https:','file:' 等等。
hostname
返回地址的主机名,例如,一个“http://www.microsoft.com/china/”的地址,location.hostname == 'www.microsoft.com'。
port
返回地址的端口号,一般 http 的端口号是 '80'。
host
返回主机名和端口号,如:'www.a.com:8080'。
pathname
返回路径名,如“http://www.a.com/b/c.html”,location.pathname == 'b/c.html'。
hash
返回“#”以及以后的内容,如“http://www.a.com/b/c.html#chapter4”,location.hash == '#chapter4';如果地址里没有“#”,则返回空字符串。
search
返回“?”以及以后的内容,如“http://www.a.com/b/c.asp?selection=3&jumpto=4”,location.search == '?selection=3&jumpto=4';如果地址里没有“?”,则返回空字符串。
href
返回以上全部内容,也就是说,返回整个地址。在浏览器的地址栏上怎么显示它就怎么返回。如果想一个窗口对象打开某地址,可以使用“location.href = '...'”,也可以直接用“location = '...'”来达到此目的。

方法

reload() 相当于按浏览器上的“刷新”(IE)或“Reload”(Netscape)键。
replace()
打开一个 URL,并取代历史对象中当前位置的地址。用这个方法打开一个 URL 后,按下浏览器的“后退”键将不能返回到刚才的页面。

frames[]; Frame 框架对象 请参阅“使用框架和 Cookies”一章。

document 文档对象 描述当前窗口或指定窗口对象的文档。它包含了文档从<head>到</body>的内容。
  用法:document (当前窗口)
   或 <窗口对象>.document (指定窗口)

属性

cookie 关于 cookie 请参看“使用框架和 Cookies”一章。
lastModified
当前文档的最后修改日期,是一个 Date 对象。
referrer
如果当前文档是通过点击连接打开的,则 referrer 返回原来的 URL。
title
指<head>标记里用<title>...</title>定义的文字。在 Netscape 里本属性不接受赋值。
fgColor 指<body>标记的 text 属性所表示的文本颜色。
bgColor 指<body>标记的 bgcolor 属性所表示的背景颜色。
linkColor
指<body>标记的 link 属性所表示的连接颜色。
alinkColor
指<body>标记的 alink 属性所表示的活动连接颜色。
vlinkColor
指<body>标记的 vlink 属性所表示的已访问连接颜色。

方法

open() 打开文档以便 JavaScript 能向文档的当前位置(指插入 JavaScript 的位置)写入数据。通常不需要用这个方法,在需要的时候 JavaScript 自动调用。
write(); writeln()
向文档写入数据,所写入的会当成标准文档 HTML 来处理。writeln() 与 write() 的不同点在于,writeln() 在写入数据以后会加一个换行。这个换行只是在 HTML 中换行,具体情况能不能够是显示出来的文字换行,要看插入 JavaScript 的位置而定。如在<pre>标记中插入,这个换行也会体现在文档中。
clear() 清空当前文档。
close() 关闭文档,停止写入数据。如果用了 write[ln]() 或 clear() 方法,就一定要用 close() 方法来保证所做的更改能够显示出来。如果文档还没有完全读取,也就是说,JavaScript 是插在文档中的,那就不必使用该方法。

现在我们已经拥有足够的知识来做以下这个很多网站都有的弹出式更新通知了。

<script language="JavaScript">
<!--
var whatsNew = open('','_blank','top=50,left=50,width=200,height=300,' +
                'menubar=no,toolbar=no,directories=no,location=no,' +
                'status=no,resizable=no,scrollbars=yes');
whatsNew.document.write('<center><b>更新通知</b></center>');
whatsNew.document.write('<p>最后更新日期:00.08.01');
whatsNew.document.write('<p>00.08.01:增加了“我的最爱”栏目。');
whatsNew.document.write('<p align="right">' +
                '<a href="javascript:self.close()">关闭窗口</a>');
whatsNew.document.close();
-->
</script>

当然也可以先写好一个 HTML 文件,在 open() 方法中直接 load 这个文件。

anchors[]; links[]; Link 连接对象

用法:document.anchors[[x]]; document.links[[x]]; <anchorId>; <linkId>
  document.anchors 是一个数组,包含了文档中所有锚标记(包含 name 属性的<a>标记),按照在文档中的次序,从 0 开始给每个锚标记定义了一个下标。
  document.links 也是一个数组,包含了文档中所有连接标记(包含 href 属性的<a>标记和<map>标记段里的<area>标记),按照在文档中的次序,从 0 开始给每个连接标记定义了一个下标。
  如果一个<a>标记既有 name 属性,又有 href 属性,则它既是一个 Anchor 对象,又是一个 Link 对象。
  在 IE 中,如果在<a>标记中添加“id="..."”属性,则这个<a>对象被赋予一个标识(ID),调用这个对象的时候只需要使用“<id>”就行了。很多文档部件都可以用这个方法来赋予 ID,但要注意不能有两个 ID 相同。

anchors 和 links 作为数组,有数组的属性和方法。单个 Anchor 对象没有属性;单个 Link 对象的属性见下。

属性

protocol; hostname; port; host; pathname; hash; search; href 与 location 对象相同。
target
返回/指定连接的目标窗口(字符串),与<a>标记里的 target 属性是一样的。

事件

onclick; onmouseover; onmouseout; onmousedown; onmouseup

applets[] Java小程序对象 它是一个数组,包含了文档中所有的 Applet 对象(Java 小程序)。作为一个数组,有数组的属性和方法。关于单个 Applet 对象的属性和方法,我引用一句话:“Applet 对象继承了 Java 小程序的所有公共属性和方法。”(英文原句:The Applet object inherits all public properties of the Java applet./The Applet object inherits all public methodss of the Java applet.) 因为本人很厌恶 Java 小程序,所以对它的什么“公共”“私有”的问题不感兴趣,也就没有探讨了。

embeds[] 插件对象 它是一个数组,包含了文档中所有的插件(<embed>标记)。因为每个插件的不同,每个 Embed 对象也有不同的属性和方法。

forms[]; Form 表单对象 document.forms[] 是一个数组,包含了文档中所有的表单(<form>)。要引用单个表单,可以用 document.forms[x],但是一般来说,人们都会这样做:在<form>标记中加上“name="..."”属性,那么直接用“document.<表单名>”就可以引用了。

Form 对象的属性

name 返回表单的名称,也就是<form name="...">属性。
action
返回/设定表单的提交地址,也就是<form action="...">属性。
method 返回/设定表单的提交方法,也就是<form method="...">属性。
target 返回/设定表单提交后返回的窗口,也就是<form target="...">属性。
encoding 返回/设定表单提交内容的编码方式,也就是<form enctype="...">属性。
length 返回该表单所含元素的数目。

方法

reset() 重置表单。这与按下“重置”按钮是一样的。
submit() 提交表单。这与按下“提交”按钮是一样的。

事件

onreset; onsubmit

以下从“Button”到“Textarea”都是表单的元素对象。

Button 按钮对象 由“<input type="button">”指定。引用一个 Button 对象,可以使用“<文档对象>.<表单对象>.<按钮名称>”。<按钮名称>指在<input>标记中的“name="..."”属性的值。引用任意表单元素都可以用这种方法。

属性

name 返回/设定用<input name="...">指定的元素名称。
value
返回/设定用<input value="...">指定的元素的值。
form 返回包含本元素的表单对象。

方法

blur() 从对象中移走焦点。
focus() 让对象获得焦点。
click() 模拟鼠标点击该对象。

事件

onclick; onmousedown; onmouseup

Checkbox 复选框对象 由“<input type="checkbox">”指定。

属性

name 返回/设定用<input name="...">指定的元素名称。
value
返回/设定用<input value="...">指定的元素的值。
form 返回包含本元素的表单对象。
checked 返回/设定该复选框对象是否被选中。这是一个布尔值。
defaultChecked 返回/设定该复选框对象默认是否被选中。这是一个布尔值。

方法

blur() 从对象中移走焦点。
focus()
让对象获得焦点。
click() 模拟鼠标点击该对象。

事件

onclick

elements[]; Element 表单元素对象 <表单对象>.elements 是一个数组,包含了该表单所有的对象。一般我们不用该数组,而直接引用各个具体的对象。

Hidden 隐藏对象 由“<input type="hidden">”指定。

属性

name 返回/设定用<input name="...">指定的元素名称。
value
返回/设定用<input value="...">指定的元素的值。
form
返回包含本元素的表单对象。

Password 密码输入区对象 由“<input type="password">”指定。

属性

name 返回/设定用<input name="...">指定的元素名称。
value
返回/设定密码输入区当前的值。
defaultValue
返回用<input value="...">指定的默认值。
form
返回包含本元素的表单对象。

方法

blur() 从对象中移走焦点。
focus()
让对象获得焦点。
select() 选中密码输入区里全部文本。

事件

onchange

Radio 单选域对象 由“<input type="radio">”指定。一组 Radio 对象有共同的名称(name 属性),这样的话,document.formName.radioName 就成了一个数组。要访问单个 Radio 对象就要用:document.formName.radioName[x]。

单个 Radio 对象的属性

name 返回/设定用<input name="...">指定的元素名称。
value
返回/设定用<input value="...">指定的元素的值。
form
返回包含本元素的表单对象。
checked
返回/设定该单选域对象是否被选中。这是一个布尔值。
defaultChecked
返回/设定该对象默认是否被选中。这是一个布尔值。

方法

blur() 从对象中移走焦点。
focus()
让对象获得焦点。
click()
模拟鼠标点击该对象。

事件

onclick

Reset 重置按钮对象 由“<input type="reset">”指定。因为 Reset 也是按钮,所以也有 Button 对象的属性和方法。至于“onclick”事件,一般用 Form 对象的 onreset 代替。

Select 选择区(下拉菜单、列表)对象 由“<select>”指定。

属性

name 返回/设定用<input name="...">指定的元素名称。
length
返回 Select 对象下选项的数目。
selectedIndex
返回被选中的选项的下标。这个下标就是在 options[] 数组中该选项的位置。如果 Select 对象允许多项选择,则返回第一个被选中的选项的下标。
form
返回包含本元素的表单对象。

方法

blur() 从对象中移走焦点。
focus()
让对象获得焦点。

事件

onchange

options[]; Option 选择项对象 options[] 是一个数组,包含了在同一个 Select 对象下的 Option 对象。Option 对象由“<select>”下的“<options>”指定。

options[] 数组的属性

length; selectedIndex 与所属 Select 对象的同名属性相同。

单个 Option 对象的属性

text 返回/指定 Option 对象所显示的文本
value
返回/指定 Option 对象的值,与<options value="...">一致。
index
返回该 Option 对象的下标。对此并没有什么好说,因为要指定特定的一个 Option 对象,都要先知道该对象的下标。这个属性好像没有什么用。
selected
返回/指定该对象是否被选中。通过指定 true 或者 false,可以动态的改变选中项。
defaultSelected 返回该对象默认是否被选中。true / false。

Submit 提交按钮对象 由“<input type="submit">指定。因为 Submit 也是按钮,所以也有 Button 对象的属性和方法。至于“onclick”事件,一般用 Form 对象的 onsubmit 代替。

Text 文本框对象 由“<input type="text">”指定。Password 对象也是 Text 对象的一种,所以 Password 对象所有的属性、方法和事件,Text 对象都有。

Textarea 多行文本输入区对象 由“<textarea>”指定。Textarea 对象所有的属性、方法和事件和 Text 对象相同,也就是跟 Password 对象一样。

images[]; Image 图片对象 document.images[] 是一个数组,包含了文档中所有的图片(<img>)。要引用单个图片,可以用 document.images[x]。如果某图片包含“name”属性,也就是用“<img name="...">”这种格式定义了一幅图片,就可以使用“document.images['...']”这种方法来引用图片。在 IE 中,如果某图片包含 ID 属性,也就是用“<img id="...">”这种格式定义了一幅图片,就可以直接使用“<imageID>”来引用图片。

单个 Image 对象的属性

name; src; lowsrc; width; height; vspace; hspace; border 这些属性跟<img>标记里的同名属性是一样的。在 Netscape 里,除了 src 属性,其它属性(几乎全部)都不能改的,即使改了,在文档中也不能显示出效果来。这些属性最有用的就是 src 了,通过对 src 属性赋值,可以实时的更改图片。

事件

onclick

不显示在文档中的 Image 对象

不显示在文档中的 Image 对象是用 var 语句定义的:

var myImage = new Image(); 或
var myImage = new Image(<图片地址字符串>);

然后就可以像一般 Image 对象一样对待 myImage 变量了。不过既然它不显示在文档中,以下属性:lowsrc, width, height, vspace, hspace, border 就没有什么用途了。一般这种对象只有一个用:预读图片(preload)。因为当对对象的 src 属性赋值的时候,整个文档的读取、JavaScript 的运行都暂停,让浏览器专心的读取图片。预读图片以后,浏览器的缓存里就有了图片的 Copy,到真正要把图片放到文档中的时候,图片就可以立刻显示了。现在的网页中经常会有一些图像连接,当鼠标指向它的时候,图像换成另外一幅图像,它们都是先预读图像的。

预读图像的 JavaScript 例子

var imagePreload = new Image();

imagePreload.src = '001.gif';
imagePreload.src = '002.gif';
imagePreload.src = '003.gif';

以上例子适合预读少量图片。

function imagePreload() {
  var imgPreload = new Image();
  for (i = 0; i < arguments.length; i++) {
    imgPreload.src = arguments[i];
  }
}

imagePreload('001.gif', '002.gif', '003.gif', '004.gif', '005.gif');

以上例子适合预读大量图片。 

<script src="http://www.iselong.com/z/sp/side_foot.js"></script> .. <script src="http://www.google-analytics.com/urchin.js" type=text/javascript></script> <script type=text/javascript> _uacct = "UA-100587-1"; urchinTracker(); </script>

转贴Tina's blog

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值