楼主: yueshily82

JavaScript技术讲座

[复制链接]
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
21#
 楼主| 发表于 2006-7-7 20:00 | 只看该作者
一、对象的定义

JavaScript对象的定义,其基本格式如下:

Function Object(属性表)


This.prop1=prop1
This.prop2=prop2

...

This.meth=FunctionName1;

This.meth=FunctionName2;

...

在一个对象的定义中,可以为该对象指明其属性和方法。通过属性和方法构成了一个对象的实例。如以下是一个关于University对象的定义:

Function university(name,city,creatDate URL)


This.name=name
This.city=city

This.creatDate=New Date(creatDate)

This.URL=URL

其基本含义如下:


 
Name-指定一个“单位”名称。
 
City-“单位”所在城市。
 
CreatDate-记载university对象的更新日期。
 
URL-该对象指向一个网址。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
22#
 楼主| 发表于 2006-7-7 20:01 | 只看该作者
二、创建对象实例

一旦对象定义完成后,就可以为该对象创建一个实例了:


NewObject=New object();
其中Newobjet是新的对象,Object已经定义好的对象。例:

U1=New university(“云南省”,“昆明市”,"January 05,199712:00:00","http://www.YN.KM"

U2=New university(“云南电子科技大学”,“昆明”,"January 07,1997 12:00:00","htlp://www.YNKJ.CN"

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
23#
 楼主| 发表于 2006-7-7 20:02 | 只看该作者
三、对象方法的使用

在对象中除了使用属性外,有时还需要使用方法。在对象的定义中,我们看到This.meth=FunctionName语句,那就是为定义对象的方法。实质对象的方法就是一个函数FunctionName,通过它实现自己的意图。

例在university对象中增加一个方法,该方法是显示它自己本身,并返回相应的字串。

function university(name,city,createDate,URL)


This.Name=Name;
This.city=city;

This.createDate=New Date(creatDate);

This.URL=URL;

This.showuniversity=showuniversity;

其中This.showuniversity就是定义了一个方法---showuniversity()。

而showuniversity()方法是实现university对象本身的显示。

function showuniversity()


For (var prop in this)
alert(prop+="+this[prop]+"";

其中alert是JavaScript中的内部函数,显示其字符串。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
24#
 楼主| 发表于 2006-7-7 20:02 | 只看该作者
四、JavaScript中的数组

 
使用New创建数组
JavaScript中没有提供像其它语言具有明显的数组类型,但可以通过function定义一个数组,并使用New对象操作符创建一个具有下标的数组。从而可以实现任何数据类型的存储。
a、定义对象的数组

Function arrayName(size){

This.length=Size;

for(var X=; X<=size;X++)

this[X]=0;

Reture this;

}

其中arrayName是定义数组的一个名子,Size是有关数组大小的值(1-size),即数组元素的个数。通过for循环对一个当前对象的数组进行定义,最后返回这个数组。

从中可以看出,JavaScript中的数组是从1到size,这与其它0到size的数组表示方法有所不同,当然你可根据需要将数组的下标由1到size调整到0到size-1,可由下列实现:

Function arrayName (size)

For (var X=0; X<=size;X++)

this[X]=0;

this.lenght=size;

Return this;

从上面可以看出该方法是只是调整了this.lenght的位置,该位置是用于存储数组的大小的。从而调整后的数组的下标将与其它语言一致。但请读者注意正是由于数组下标顺序由1到size,使得JavaScript中的对象功能更加强大。

b、创建数组实例

一个数组定义完成以后,还不能马上使用,必须为该数组创建一个数组实例:

Myarray=New arrayName(n);

并赋于初值:

Myarray[1]=“字串1”;

Myarray[2]=“字串2”;

Myarray[3]=“字串3”;

...

Myarray[n]=“字串n”;

一旦给数组赋于了初值后,数组中就具有真正意义的数据了,以后就可以在程序设计过程中直接引用。

创建多维数组
Function creatMArray(row,col){
var indx=0;

this.length=(row*10)+col

for(var x=1;x<=row;x++)

for(var y=1;y<=col;y++)

indx=(x*10)+y;

this[indx]=””;

}

myMArray=new creatMArray();

之后可通过myMArray[11]、myMArray[12]、myMArray[13]、myMArray[21]、myMArray[22]、myMArray[23]、

…来引用。

内部数组

在Java中为了方便内部对象的操作,可以使用窗体(Forms)、框架(Frames)、元素(element)、链接(links)和锚(Anchors)数组实现对象的访问。
 anchors[]:使用《A name=“anchorName“》标识来建立锚的链接。

 links[]: 使用<A href=”URL”>来定义一个越文本链接项。

 Forms[]: 在程序中使用多窗体时,建立该数组。

 Elements[]:在一个窗口中使用从个元素时,建立该数组。

 Frames[]:建立框架时,使用该数组

 anchors[]用于窗体的访问(它是通过《form name=“form1”》所指定的),link[]用于被链接到的锚点的访问(它是通过《a href=URL》所指定的)。Forms[]反映窗体的属性,而anchors[]反映Web页面中的链接属性。

有关锚数组的文档:

<HTML>
<HEAD>
<BODY>
<A NAME=”MyAnchorsName1”> 定义第一个锚名
HTML Code
<A NAME=”MyAnchorsName2”> 定义第二个锚名
HTML Code
<A HREF=”#MyAnchorsName1”>建立锚的链接
<A HREF=”#MyAnchorsName2”> 建立锚的链接
….
该文档段建立了两面全锚的链接,可通过Anchors[]访问这些锚。document.Anchors[0]反映第一个锚,而document.Anchors[1]反映第二个锚的有关信息。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
25#
 楼主| 发表于 2006-7-7 20:03 | 只看该作者
五、范例

范例1:一个动态文字滚动的例子。

test5_1.htm

<html>
<head>
<title></title>
<script LANGUAGE="JavaScript">
 
with (top.window.location)
{baseURL = href.substring (0,href.lastIndexOf ("/" + 1)}
total_toc_items = 0;
current_overID = "";
last_overID = "";
browser = navigator.appName;
version = parseInt(navigator.appVersion);
client=null;
loaded = 0;
if (browser == "Netscape" && version >= 3)
    client = "ns3";
function toc_item (img_name,icon_col,width,height) {
if (client =="ns3" {
img_prefix = baseURL + img_name;
this.icon_col = icon_col;
this.toc_img_off = new Image (width,height);
this.toc_img_off.src = img_prefix + "_off.gif";
this.toc_img_on = new Image (width,height);
this.toc_img_on.src = img_prefix + "_on.gif";
}
}
 
function new_toc_item (img_name,icon_row,width,height) {
toc_item [img_name] = new toc_item (img_name,icon_row,width,height);
}
 
function toc_mouseover (itemID) {
if (client =="ns3" {
current_overID = itemID;
if (current_overID != last_overID) {
document [current_overID].src = toc_item [current_overID].toc_img_on.src;
if (last_overID != "" {
document.images [last_overID].src = toc_item[last_overID].toc_img_off.src;
}
last_overID = current_overID;
}
}
}
 
function toc_mouseout () {
if (client =="ns3" {
if (current_overID != "" {
document.images [current_overID].src =
toc_item [current_overID].toc_img_off.src;
}
current_overID = "";
last_overID = "";
}
}
new_toc_item ("1",2,120,20);
<!-- Begin
function bannerObject(p){
this.msg = MESSAGE
this.out = " "
this.pos = POSITION
this.delay = DELAY
this.i = 0
this.reset = clearMessage}
 
function clearMessage(){
this.pos = POSITION}
var POSITION = 50;
var DELAY = 150;
var MESSAGE = "这是一个动态JavaScript文字显示的例子";
var scroll = new bannerObject();
function scroller(){
scroll.out += " ";
if(scroll.pos>0)
for (scroll.i = 0; scroll.i < scroll.pos; scroll.i++)
         { scroll.out +=" " ; }
if (scroll.pos>= 0)
scroll.out += scroll.msg
else
scroll.out = scroll.msg.substring(-scroll.pos,scroll.msg.length)
document.noticeForm.notice.value = scroll.out
scroll.out = " ";
scroll.pos--;
scroll.pos--;
if (scroll.pos < -(scroll.msg.length)) { scroll.reset(); } setTimeout
('scroller()',scroll.delay);}
</script>
</head>
<body onload="scroller()" bgcolor="#000000" link="#C0C0C0" vlink="#C0C0C0"
alink="#008080"
text="#C0C0C0">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%"><form NAME="noticeForm">
<p><input TYPE="text" name="notice" size="40"
  style="background-color: rgb(192,192,192)"></p>
</form>
</td>
</tr>
</table>
</center></div>
</body>
</html>
 
范例2:颜色变化的例子。

test5_2.htm

<html>
<head>
<script>
<!--
function makearray(n) {
this.length = n;
for(var i = 1; i <= n; i++)
this = 0;
return this;}
hexa = new makearray(16);
for(var i = 0; i < 10; i++)
hexa = i;
hexa[10]="a";
hexa[11]="b";
hexa[12]="c";
hexa[13]="d";
hexa[14]="e";
hexa[15]="f";
function hex(i) {
if (i < 0)
return "00";
else if (i > 255)
return "ff";
else return "" + hexa[Math.floor(i/16)] + hexa[i%16];}
function setbgColor(r, g, b) {
var hr = hex(r);
var hg = hex(g);
var hb = hex(b);
document.bgColor = "#"+hr+hg+hb;}
function fade(sr, sg, sb, er, eg, eb, step) {
for(var i = 0; i <= step; i++) {
setbgColor( Math.floor(sr * ((step-i)/step) + er * (i/step)),
Math.floor(sg * ((step-i)/step) + eg * (i/step)), Math.floor(sb *
((step-i)/step) + eb * (i/step))); }}
function fadein() {
fade(255,0,0,0,0,255,100);
fade(0,0,255,0,255,0,100);
fade(0,255,0, 0,0,0, 100);}
fadein();
// -->
</script>
<body>
</body>
</html>
 

  本讲介绍了用户自行创建对象的方法, 用户可根据需要创建自己的对象。并介绍了JavaScript中建数组的方法。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
26#
 楼主| 发表于 2006-7-7 20:06 | 只看该作者
第六讲 使用内部对象系统
使用浏览器的内部对象系统, 可实现与HTML文档进行交互。它的作用是将相关元素组织包装起来,提供给程序设计人员使用,从而减轻编程人的劳动,提高设计Web页面的能力。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
27#
 楼主| 发表于 2006-7-7 20:06 | 只看该作者
一、浏览器对象层次及其主要作用

  除了前面提到过的文档document对象外,Navigator浏览器中还提供了窗口(Window)对象以及历史(History)和位置(Location)对象。

 浏览器对象(Navigator)

提供有关浏览器的信息

 窗口对象(Windows)

Window对象处于对象层次的最顶端,它提供了处理Navigator窗口的方法和属性。

 位置对象(Location)

Location对象提供了与当前打开的URL一起工作的方法和属性,它是一个静态的对象。

 历史对象(History)

History对象提供了与历史清单有关的信息。

 文档对象(Document)

document对象包含了与文档元素(elements)一起工作的对象,它将这些元素封装起来供编程人员使用。

 

  编程人员利用这些对象,可以对WWW浏览器环境中的事件进行控制并作出处理。在JavaScript中提供了非常丰富的内部方法和属性,从而减轻了编程人员的工作,提高编程效率。这正是基于对象与面向对象的根本区别所在。在这些对象系统中,文档对象属于非常重要的,它位于最低层,但对于我们实现Web页面信息交互起作关键作用。因而它是对象系统的核心部分。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
28#
 楼主| 发表于 2006-7-7 20:07 | 只看该作者
二、文档对象功能及其作用

  在Navigator浏览器中,document文档对象是核心是,同时也是最重要的。见图6-1所示。

Links  Anchor  Form  Method  Prop  
链接对象  锚对象  窗体对象  方法  对象  

图6-1 document对象

  从图6-1中可以看出,document对象的主要作用就是把这些基本的元素(如links,anchor等)包装起来,提供给编程人员使用。从另一个角度看,document对象中又是由属性和方法组成。

 

1、document中三个主要的对象

在document中主要有:links,anchor,form等三个最重要的对象:

(1)anchor锚对象:

anchor对象指的是<A Name=...> </A>标识在HTML源码中存在时产生的对象。它包含着文档中所有的anchors信息。

(2)链接links对象

  link对象指的是用<A Href=...> </A>标记的连接一个超文本或超媒体的元素作为一个特定的URL。

(3)窗体(Form)对象

  窗体对象是文档对象的一个元素,它含有多种格式的对象储存信息,使用它可以在JavaScript脚本中编写程序进行文字输入,并可以用来动态改变文档的行为。通过document. Forms[]数组来使得在同一个页面上可以有多个相同的窗体,使用forms[]数组要比使用窗体名字要方便得多。

例:下面就是一个使用窗体数组和窗体名字的例子。该程序使得两个窗体中的字段内容保持一致。

Test6_1.htm

<Html>

<head>

</head>

<body>

<form >

<input type=text onChange="document.my.elements[0].value=this.value;" >

</form>

<form NAME="my">

<input type=text onChange="document.forms[0].elements[0].value=this.value;">

</form>

</body>

</html>

其中用了OnChnge事件(当窗体内容改变时激发)。第一个使用窗体名字标识my,第二个使用窗体数组Forms[]。其效果是一致。

 

2、文档对象中的attribute属性

  document对象中的attribute属性,主要用于在引用Href标识时,控制着有关颜色的格式和有关文档标题、文档原文件的URL以及文档最后更新的日期。这部分元素的主要含义如下:

(1)链接颜色:alinkcolor

这个元素主要用于,当选取一个链接时,链接对象本身的颜色就按alinkcolo r指定改变。

(2)链接颜色:linkcolor

当用户使用<A Href=...> Text string </A>链接后,Textstring的颜色就会按Linkcolor所指定的颜色更新。

(3)浏览过后的颜色:VlinkColor

该属性表示的是已被浏览存储为已浏览过的链接颜色。

(4)背景颜色:bgcolor

该元素包含文档背景的颜色。

(5)前景颜色:Fgcolor

该元素包含HTML文档中文本的前景颜色。

 

3、文档对象的基本元素

(1)窗体属性:

  窗体属性是与HTML文档中<Form>...</Form>相对应的一组对象在HTML文档所创建的窗体数,由length指定。通过document.forms.length反映该文档中所创建的窗体数目。

(2)锚属性:anchors

  该属性中,包含了HTML文档的所有<A> </A>标记为Name=...的语句标识。所有“锚”的数目保存在document.anchors.length中。

(3)链接属性:links

  链接属性是指在文档中<A>...</A>的由Href=...指定的数目,其链接数目保存在document.links.length中。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
29#
 楼主| 发表于 2006-7-7 20:07 | 只看该作者
三、范例

例1:下面我们通过一个例子来说明文档对象的综合应用。输出结果见图6-2所示。

Test6_2.htm

<html>

<head>

</HEAD>

<BOdy>

<Form Name="mytable">

请输入数据:

<Input Type="text" Name="text1" Value="">

</Form>

<A name="Link1" href="test31.htm">链接到第一个文本</a><br>

<A name="Link2" href="test32.htm">链接到第二个文本</a><br>

<A name="Link2" href="test33.htm">链接到第三个文本</a><br>

<A href="#Link1">第一锚点</a>

<A href="#Link2">第二锚点</a>

<A Href="#Link3">第三锚点</a>

<BR>

<Script Language="JavaScript">

document.write("文档有"+document.links.length+"个链接"+"<br>";

document.write("文档有"+document.anchors.length+"个锚点"+"<br>";

document.write("文档有"+document.forms.length+"个窗体";

</script>

</body>

</HTML>

例子2:下列程序随机产生每日一语。

test6_3.html

<HTML>

<HEAD>

<script Language="JavaScript">

<!--

tips = new Array(6);

tips[0]="每日一语(1)";

tips[1]="每日一语(2)";

tips[2]="每日一语(3)";

tips[3]="每日一语(4)";

tips[4]="每日一语(5)";

tips[5]="每日一语(6)";

index = Math.floor(Math.random() * tips.length);

document.write("<FONT SIZE=8 COLOR=DARKBLUE>" + tips[index]+"</FONT>";

</Script>

</HEAD>

</BODY>

</HTML>

本讲主要介绍了JavaScript对象系统的使用方法,其中重点介绍了文档对象及使用。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2006-06-30 13:00:02ITPUB元老
日期:2008-05-16 22:29:10
30#
 楼主| 发表于 2006-7-7 20:09 | 只看该作者
第七讲 窗口及输入输出
JavaScript是基于对象的脚本编程语言,那么它的输入输出就是通过对象来完成的。其中有关输入可通过窗口(Window)对象来完成,而输出可通过文档(document)对象的方法来实现。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表