Javascript是一种由Netscape的LiveScript发展而来的脚本语言,主要目的是为了解决服务器终端语言,比如Perl,遗留的速度问题。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

  JavaScript 的正式名称是 "ECMAScript"。这个标准由 ECMA 组织发展和维护。ECMA-262 是正式的 JavaScript 标准。这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft)。Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 1996 年开始,已经出现在所有的 Netscape 和 Microsoft 浏览器中。ECMA-262 的开发始于 1996 年,在 1997 年 7 月,ECMA 会员大会采纳了它的首个版本。
 

  在 1998 年,该标准称为了国际 ISO 标准 (ISO/IEC 16262)。这个标准仍然处于发展之中。

历史

  大概在1992年,一家称作Nombas的公司开始开发一种叫做C减减(C-minus-minus,简称Cmm)的嵌入式脚本语言。这个脚本语言捆绑在一个叫做CEnvi的共享软件产品中,当Netscape Navigator崭露头角时,Nombas开发了一个可以嵌入网页中的CEnvi的版本。这些早期的试验称为EspressoPage(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端脚本语言。而Nombas丝毫没有料到它的理念将会成为因特网的一块重要基石。

基本概念

  在这里只作简单介绍,在以后的例子中结程序再作具体解释其作用。
 

  1、运算符
 

  运算符就是完成操和的一系列符号,它有七类:
 

  赋值运算符、算术运算符、比较运算符、逻辑运算符、条件运算、位操作运算符和字符串运算符。
 

  2、表达式
 

  运算符和操作数的组合称为表达式,通常分为四类:赋值表达式、算术表达式、布尔表达式和字符串表达式。
 

  3、语句
 

  Javascript程序是由若干语句组成的,语句是编写程序的指令。Javascript提供了完整的基本编程语句,它们是:
 

  赋值语句、switch选择语句、while循环语句、for循环语句、do while循环语句、break循环中止语句和continue循环中断语句。
 

  4、函数
 

  函数是命名的语句段,这个语句段可以被当作一个整体来引用不着和执行。使用函数要注意以下几点:
 

  1)函数由关键字function定义;
 

  2)函数必须先定义后使用,否则将出错;
 

  3)函数名是调用函数时引用的名称,它对大小写是敏感的,调用函数时不可写错函数名;
 

  4)参数表示传递给函数使用或操作的值,它可以是常量,也可以是变量;
 

  5)return语句用于返回表达式的值,也可以没有。
 

  5、对象
 

  Javascript的一个重要功能就是基于对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。
 

  一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象。比如要设定网页的背景颜色,所针对的对象就是document,所用的属性名是bgcolor,如document.bgcolor="blue",就是表示使背景的颜色为蓝色。
 

  6、事件
 

  用户与网页交互时产生的操作,称为事件。绝大部分事都由用户的动作所引发,如:用户按鼠标的按钮,就产生onclick事件,若鼠标的指针的链接上移动,就产生onmouseover事件等等。在Javascript中,事件往往与事件处理程序配套使用。
 

  学习Javascript比较快速有效的方法是先熟悉一些基本概念,然后找几个别人设计好的程序认真仔细地分析一遍,再稍作改动,再看看能否达到预期目的,不断地举一反三,既可以加深对一些参数、设计方法的理解,又可以快速地提高自己的水平。另外,再提醒一下:Javascript对大小写是敏感的,特别是一些对象、方法、属性的大小写一定要一致,要养成一种良好的习惯,否则在调试程序时可要累死你了。
 

  7、变量
 

  如 var myVariable = "some value";

特点

  能够具有交互性,能够包含更多活跃的元素,就有必要在网页中嵌入其它的技术。如:Javascript、VBScript、Document Object Model(文件目标模块)、Layers和 Cascading Style Sheets(CSS),这里主要讲Javascript。那么Javascript是什么东东?Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。 Javascript是由 Netscape公司开发的一种脚本语言(scripting language),或者称为描述语言。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。 运行用Javascript编写的程序需要能支持Javascript语言的浏览器。Netscape公司 Navigator 3.0以上版本的浏览器都能支持 Javascript程序,微软公司 Internet Explorer 3.0以上版本的浏览器基本上支持Javascript。微软公司还有自己开发的Javascript,称为JScript。 Javascript和Jscript基本上是相同的,只是在一些细节上有出入。 Javascript短小精悍, 又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。 同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。
 

  JavaScript 使网页增加互动性。JavaScript 使有规律地重复的HTML文段简化,减少下载时间。JavaScript 能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由 CGI 验证。JavaScript 的特点是无穷无尽的,只要你有创意。

与Java的不同

  很多人看到 Java 和 JavaScript 都有“Java”四个字,就以为它们是同一样东西,连我自己当初也是这样。其实它们是完完全全不同的两种东西。Java,全称应该是 Java Applet,是嵌在网页中,而又有自己独立的运行窗口的小程序。Java Applet 是预先编译好的,一个 Applet 文件(.class)用 Notepad 打开阅读,根本不能理解。Java Applet 的功能很强大,可以访问 http、ftp等协议,甚至可以在电脑上种病毒(已有先例了)。相比之下,JavaScript 的能力就比较小了。JavaScript 是一种“脚本”(“Script”),它直接把代码写到 HTML 文档中,浏览器读取它们的时候才进行编译、执行,所以能查看 HTML 源文件就能查看JavaScript 源代码。JavaScript 没有独立的运行窗口,浏览器当前窗口就是它的运行窗口。它们的相同点,我想只有同是以 Java 作编程语言一点了。
 

  Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。
 

  Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java 应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。
 

  Java分为三个体系JavaSE,JavaEE,JavaME。

开发软件

  一个 JavaScript 程序其实是一个文档,一个文本文件。它是嵌入到 HTML 文档中的。所以,任何可以编写 HTML 文档的软件都可以用来开发 JavaScript。在此我推荐大家用 FrontPage 2000 附带的 Microsoft 脚本编辑器(在 FrontPage 菜单 | 工具 | 宏 | Microsoft 脚本编辑器)。它是个像 Visual Basic / C++ 一样的程序开发器,能对正在输入的语句作出简要提示。配合 FrontPage 2000,使工作量大大减少。

使用方法

  一、Javascript在网页的用法
 

  Javascript加入网页有两种方法:
 

  1、直接加入HTML文档
 

  这是最常用的方法,大部分含有Javascript的网页都采用这种方法,如:
 

  <script language="Javascript">
 

  <!--
 

  document.writeln("这是Javascript!采用直接插入的方法!");
 

  //-Javascript结束-->
 

  </script>
 

  在这个例子中,我们可看到一个新的标签: <script>……</script>,而<script language="Javascript"> 用来告诉浏览器这是用Javascript编写的程序,需要调动相应的解释程序进行解释。(w3c已经建议使用新的标准:<script type="txet/javascript">)
 

  HTML的注释标签<!--和-->:用来去掉浏览器所不能识别的Javascript源代码的,这对不支持 Javascript 语言的浏览器来说是很有用的。
 

  //-Javascript结束:双斜杠表示 Javascript的注释部分,即从//开始到行尾的字符都被忽略。 至于程序中所用到的document.write()函数则表示将括号中的文字输出到窗口中去, 这在后面将会详细介绍。 另外一点需要注意的是,<script>……</script>的位置并不是固定的,可以包含在<head>......</head> 或<body>.....</body>中的任何地方。
 

  2、引用方式
 

  如果已经存在一个Javascript源文件(以js为扩展名),则可以采用这种引用的方式,以提高程序代码的利用率。其基本格式如下:
 

  <script src=url language="Javascript"></script>
 

  其中的Url就是程序文件的地址。同样的,这样的语句可以放在HTML文档头部或主体的任何部分。 如果要实现“直接插入方式”中所举例子的效果,可以首先创建一个Javascript源代码文件“Script.js”,其内容如下:
 

  document.writeln("这是Javascript!采用直接插入的方法!");
 

  在网页中可以这样调用程序:<script src="Script.js" language="Javascript"></script> 。

在web编程中一些比较常用的javascript函数

  /**
 

  * 一些常用的javascript函数(方法)
 

  *
 

  * 为便于使用,均书写成String对象的方法
 

  * 把他保存为.js文件,可方便的扩展字符串对象的功能
 

  *
 

  * 方法名 功 能
 

  * ----------- --------------------------------
 

  * Trim 删除首位空格
 

  * Occurs 统计指定字符出现的次数
 

  * isDigit 检查是否由数字组成
 

  * isAlpha 检查是否由数字字母和下划线组成
 

  * isNumber 检查是否为数
 

  * lenb 返回字节数
 

  * isInChinese 检查是否包含汉字
 

  * isEmail 简单的email检查
 

  * isDate 简单的日期检查,成功返回日期对象
 

  * isInList 检查是否有列表中的字符字符
 

  * isInList 检查是否有列表中的字符字符
 

  */
 

  /*** 删除首尾空格 ***/
 

  String.prototype.Trim = function() {
 

  return this.replace(/(^\s*)|(\s*$)/g, "");
 

  }
 

  /*** 统计指定字符出现的次数 ***/
 

  String.prototype.Occurs = function(ch) {
 

  // var re = eval("/[^"+ch+"]/g");
 

  // return this.replace(re, "").length;
 

  return this.split(ch).length-1;
 

  }
 

  /*** 检查是否由数字组成 ***/
 

  String.prototype.isDigit = function() {
 

  var s = this.Trim();
 

  return (s.replace(/\d/g, "").length == 0);
 

  }
 

  /*** 检查是否由数字字母和下划线组成 ***/
 

  String.prototype.isAlpha = function() {
 

  return (this.replace(/\w/g, "").length == 0);
 

  }
 

  /*** 检查是否为数 ***/
 

  String.prototype.isNumber = function() {
 

  var s = this.Trim();
 

  return (s.search(/^[+-]?[0-9.]*$/) >= 0);
 

  }
 

  /*** 返回字节数 ***/
 

  String.prototype.lenb = function() {
 

  return this.replace(/[^\x00-\xff]/g,"**").length;
 

  }
 

  /*** 检查是否包含汉字 ***/
 

  String.prototype.isInChinese = function() {
 

  return (this.length != this.replace(/[^\x00-\xff]/g,"**").length);
 

  }
 

  /*** 简单的email检查 ***/
 

  String.prototype.isEmail = function() {
 

  var strr;
 

  var mail = this;
 

  var re = /(\w+@\w+\.\w+)(\.\w*)(\.\w*)/i;
 

  re.exec(mail);
 

  if(RegExp.!="" && RegExp.!="." && RegExp.!=".")
 

  strr = RegExp.+RegExp.+RegExp.;
 

  else
 

  if(RegExp.!="" && RegExp.!=".")
 

  strr = RegExp.+RegExp.;
 

  else
 

  strr = RegExp.;
 

  return (strr==mail);
 

  }
 

  /*** 简单的日期检查,成功返回日期对象 ***/
 

  String.prototype.isDate = function() {
 

  var p;
 

  var re1 = /(\d)[年./-](\d)[月./-](\d)[日]?$/;
 

  var re2 = /(\d)[月./-](\d)[日./-](\d)[年]?$/;
 

  var re3 = /(\d)[月./-](\d)[日./-](\d)[年]?$/;
 

  if(re1.test(this)) {
 

  p = re1.exec(this);
 

  return new Date(p[1],p[2],p[3]);
 

  }
 

  if(re2.test(this)) {
 

  p = re2.exec(this);
 

  return new Date(p[3],p[1],p[2]);
 

  }
 

  if(re3.test(this)) {
 

  p = re3.exec(this);
 

  return new Date(p[3],p[1],p[2]);
 

  }
 

  return false;
 

  }
 

  /*** 检查是否有列表中的字符字符 ***/
 

  String.prototype.isInList = function(list) {
 

  var re = eval("/["+list+"]/");
 

  return re.test(this);
 

  }