第2章 JavaScript操作DOM对象

2.1 window对象

浏览器对象模型(BOM)是JavaScript的组成之一,它提供了独立于内容与浏览器窗口进行交互的对象,使用浏览器对象模型可以实现与HTML的交互。它的作用是将相关的元素组织包装起来,提供给程序设计人员使用,从而降低开发人员的劳动量,提高设计Web页面的能力。

BOM的分层结构:

window:history document location

document:link form anchor

form:button checkbox text …… textarea radio select

window对象是整个BOM的核心,在浏览器中打开网页后,首先看到的是浏览器窗口,即顶层的window对象;其次是网页文档内容,即document(文档)。它的内容包括一些超链接(link)、表单(form)、锚(anchor)等,表单由文本框(text)、单选按钮(radio)、按钮(button)等表单元素组成。在浏览器对象结构中,除了document对象外,window对象之下还有两个对象:地址对象(location)和历史对象(history),它们对应于浏览器地址栏和前进/后退按钮。

使用BOM可以实现的功能:

→ 弹出新的浏览器窗口

→ 移动、关闭浏览器窗口及调整窗口的大小

→ 在浏览器窗口中实现页面的前进、后退功能

window对象也称为浏览器对象。当浏览器打开HTML文档时,通常会创建一个window对象,如果文档定义了一个或多个框架时,浏览器将为原始文档创建一个window对象,同时为每个框架另外创建一个window对象。

2.1.1 常用的属性

window对象的常用属性

名称

说明

history

有关客户访问过的URL的信息

location

有关当前URL的信息

screen

只读属性,包含有关客户端显示屏幕的信息

语法:

window.属性名=”属性值”

例:window.location=”http://www.baidu.com”,表示跳转到百度搜索页面;screen.height返回显示浏览器的屏幕的高度,单位为像素。

2.1.2 常用的方法

window对象的常用方法

名称

说明

prompt()

显示可提示用户输入的对话框

alert()

显示一个带有提示信息和一个“确定”按钮的警示对话框

confirm()

显示一个带有提示信息、“确定”和“取消”按钮的对话框

close()

关闭浏览器窗口

open()

打开一个新的浏览器窗口,加载给定URL所指定的文档

setTimeout()

在指定的毫秒数后调用函数或计算表达式

setInterval()

按照指定的周期(以毫秒计)来调用函数或表达式

语法:

window.方法名();

window对象是全局对象,所以在使用window对象的属性和方法时,window可以省略。例:使用的alert(),相当于写成了window.alert()。

1、 confirm()

confirm()将弹出一个确认对话框。

语法:

window.confirm(“对话框中显示的纯文本”);

confirm()弹出的确认对话框中,有一条提示信息、一个“确定”按钮和一个“取消”按钮。如果用户单击“确定”按钮,则confirm()返回true;如果单击“取消”按钮,则confirm()返回false。

在用户单击“确定”按钮或“取消”按钮将对话框关闭之前,它将阻止用户对浏览器的所有操作,也就是说,当调用confirm()时,在用户做出应答(单击按钮或关闭对话框)之前,不会执行下一条语句。

☆示例

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>确认对话框</title>
</head>
<body>
    <script type="text/javascript">
        var flag=confirm("确认要删除此条信息吗?");
        if(flag==true){
            alert("删除成功!");
        }else{
            alert("你取消了删除");
        }
    </script>
</body>
</html>

在浏览器中运行

如果单击“确定”按钮

 

如果单击“取消”按钮

 

prompt()方法、alert()方法和confirm()方法的异同:

相同处:它们都是在页面上弹出对话框

不同处:作用不相同。

→ alert()只要一个参数,仅显示警告对话框的信息,无返回值,不能对脚本产生任何改变。

→ prompt()有两个参数,是输入对话框,用来提示用户输入一些信息,单击“取消”按钮则返回null,单击“确定”按钮则返回用户输入的值,常用于收集用户关于特定问题而反馈的信息。

→ confirm()只有一个参数,是确认对话框,显示提示对话框的消息、“确定”按钮和“取消”按钮,单击“确定”按钮返回true,单击“取消”按钮返回false,因此与if-else语句搭配使用。

2、 close()

close()方法用于关闭浏览器窗口。

语法:

window.close();

close()方法可用在网站页面中可以对当前窗口进行关闭的按钮。

3、 open()

在页面上弹出一个新的浏览器窗口。

语法:

window.open(“弹出窗口的url”,”窗口名称”,”窗口特征”)

窗口的特征属性

名称

说明

height、width

窗口文档显示区的高度、宽度,以像素计

left、top

窗口的x坐标、y坐标,以像素计

toolbar=yes|no|1|0

是否显示浏览器的工具栏,默认是yes

scrollbars=yes|no|1|0

是否显示滚动条,默认是yes

location=yes|no|1|0

是否显示地址栏,默认是yes

status=yes|no|1|0

是否添加状态栏,默认是yes

menubar=yes|no|1|0

是否显示菜单栏,默认是yes

resizable=yes|no|1|0

窗口是否可调节尺寸,默认是yes

titlebar=yes|no|1|0

是否显示标题栏,默认是yes

fullscreen=yes|no|1|0

是否使用全屏模式显示浏览器,默认是no

open()方法通常用在打开一个网页弹出广告页面或网站的信息声明页面等。

2.2 history对象与location对象

2.2.1 history对象

history对象提供用户最近浏览过的URL列表。但出于隐私方面的原因,history对象不再允许脚本访问已经访问过的实际URL,可以使用history对象提供的逐个返回访问过的页面方法。

history对象的方法

名称

描述

back()

加载history对象列表中的前一个URL

forward()

加载history对象列表中的后一个URL

go()

加载history对象列表中的某个具体URL

→ back()方法会让浏览器加载前一个浏览过的文档,history.back()等效于浏览器中的“后退”按钮。

→ forward()方法会让浏览器加载后一个浏览过的文档,history.forward()等效于浏览器中的“前进”按钮。

→ go(n)方法中的n是一个具体的数字,当n>0时,装入历史列表中往前数的第n个页面;当n=0时,装入当前页面;当n<0时,装入历史列表中往后数的第n个页面。

◇history.go(1)代表前进1页,相当于浏览器中的“前进”按钮,等价于forward()方法。

◇history.go(-1)代表后退1页,相当于浏览器中的“后退”按钮,等价于back()方法。

2.2.2 location对象

location对象提供当前页面的URL信息,并且可以重新装载当前页面或装入新页面。

location对象的属性

名称

描述

host

设置或返回主机名和当前URL的端口号

hostname

设置或返回当前URL的主机名

href

设置或返回完整的URL

location对象的方法

名称

描述

reload()

重新加载当前文档

replace()

用新的文档替换当前文档

location对象常用的属性是href,通过对此属性设置不同的网址,可以实现跳转功能。也可以直接写成location=”url”来实现页面跳转,省略了href。

使用<a href=”url”>的方法实现页面跳转,是固定页面;location对象的href属性可以动态地改变链接的页面。

2.3 document对象

document对象既是window对象的一部分,又代表了整个HTML文档,可用来访问页面中的所有元素。所以在使用document对象时,除了要适用于各浏览器外,也要符合W3C(万维网联盟)的标准。

2.3.1 document对象的常用属性

document对象的常用属性

属性

描述

referrer

返回载入当前文档的URL

URL

返回当前文档的URL

referrer语法:

document.referrer

当前文档如果不是通过超链接访问的,则document.referrer的值为null。

URL语法:

document.URL

上网浏览某个页面时,由于不是由指定的页面进入的,因此系统将会提醒不能浏览本页面或者直接跳转到其他页面,这样的功能实际上就是通过referrer属性来实现的。

☆示例

index.html页面关键代码:
<body>
    <h1><a href="示例4-praise.html">马上去领奖啦!</a></h1>
</body>
</html>

在index.html中单击“马上去领奖啦!”链接,进入praise.html页面,在praise.html页面中使用referrer属性获得链接进入本页的页面地址,然后判断是否从领奖页面进入,如果不是,则页面自动跳转到登录页面(login.html),praise.html页面关键代码:

<body>
<script type="text/javascript">
    var preUrl = document.referrer;//载入本页面文档的地址
    if(preUrl==""){
        document.write("<h2>您不是从领奖页面进入,5秒后将自动跳转到登录页面</h2>")
        setTimeout("location.href='示例4-login.html'",5000);//使用setTimeout延迟5秒后自动跳转
    }else{
        document.write("<h2>大奖赶快拿啦!笔记本!数码相机!</h2>");
    }
</script>
</body>

注意praise.html页面的关键代码中使用setTimeout()是定时函数,作用是延迟5秒后自动跳转到login.html。

如果HTML页面直接在本地运行,则无论是否从本页面进入,referrer获取的地址都将是一个空字符串,因此需要在服务器环境下打开HTML页面。

提示:由于webStorm具有模拟网站服务器的功能,因此使用webStorm打开index.html页面,单击“马上去领奖啦!”链接,进入praise.html页面,才能够获取当前文档的url。

2.3.2 document对象的常用方法

document对象的常用方法

方法

描述

getElementById()

返回对拥有指定id的第一个对象的引用

getElementsByName()

返回带有指定名称的对象的集合

getElementsByTagName()

返回带有指定标签名的对象的集合

write()

向文档写文本、HTML表达式或JavaScript代码

→ getElementById()方法一般用于访问div、图片、表单元素、网页标签等,但要求访问对象的id是唯一的。

→ getElementsByName()方法与getElementById()方法相似,但它访问的是具体name属性的元素,由于一个文档中的name属性可能不唯一,因此getElementsByName()方法一般用于访问一组相同name属性的元素,如具有相同name属性的单选按钮、复选框等。

→ getElementsByTagName()方法是按标签来访问页面元素的,一般用于访问一组相同的元素,如一组<input>、一组图片等。

☆示例

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>岛上书店</title>
</head>
<body>
    <div class="content">
        <div id="book">书名:岛上书店</div>
        <input type="button" name="changeBox" value="换换名称" onclick="alterBook()";/>
        <br/>四季名称:
        <input type="text" name="season" value=""/>
        <input type="text" name="season" value=""/>
        <input type="text" name="season" value=""/>
        <input type="text" name="season" value=""/><br/><br/>
        <input name="b2" type="button" value="input内容" onclick="all_input()"/>
        <input name="b3" type="button" value="四季名称" onclick="s_input()"/>
        <input name="b4" type="button" value="清空页面内容" onclick="clearAll()"/>
        <p id="replace"></p>
    </div>
    <script type="text/javascript">
        function alterBook(){
            document.getElementById("book").innerHTML="现象级全球畅销书";
        }
        function all_input(){
            var aInput = document.getElementsByTagName("input");
            var sStr = "";
            for(var i=0;i<aInput.length;i++){
                sStr+=aInput[i].value+"  ";
            }
            document.getElementById("replace").innerHTML=sStr;
        }
        function s_input(){
            var aInput = document.getElementsByName("season");
            var sStr = "";
            for(var i=0;i<aInput.length;i++){
                sStr+=aInput[i].value+"  ";
            }
            document.getElementById("replace").innerHTML=sStr;
        }
        function clearAll(){
            document.write("");
        }
    </script>
</body>
</html>

提示innerHTML是几乎所有的HTML元素都有的属性。它是一个字符串,用来设置或获取当前对象的开始标签和结束标签之间的HTML。

2.4 JavaScript内置对象

JavaScript中,系统的内置对象有Date对象、Array对象、String对象和Math对象等。

→ Date:用于操作日期和时间。

→ Array:用于在单独的变量名中存储一系列的值。

→ String:用于支持对字符串的处理。

→ Math:使我们有能力执行常用的数学任务,它包含了若干个数字常量和函数。                         

2.4.1 Date对象

语法:

var 日期实例 = new Date(参数);

日期实例是存储Date对象的变量。可以省略参数,如果没有参数,则表示当前日期和时间,例:var today = new Date();//将当前日期和时间存储在变量today中。

参数是字符串格式“MM DD, YYYY, hh:mm:ss”,表示日期和时间,例:var tdate = new Date(“July 15, 2013,16:34:28”);。

Date对象有大量用于设置、获取和操作日期的方法,从而实现在页面中显示不同类型的日期时间。其中最常用的是获取日期的方法。

Date对象的常用方法

方法

说明

getDate()

返回Date对象的一个月中的每一天,其值为1~31

getDay()

返回Date对象的星期中的每一天,其值为0~6

getHours()

返回Date对象的小时数,其值为0~23

getMinutes()

返回Date对象的分钟数,其值为0~59

getSeconds()

返回Date对象的秒数,其值为0~59

getMonth()

返回Date对象的月份,其值为0~11

getFullYear()

返回Date对象的年份,其值为四位数

getTime()

返回自某一时刻(1970年1月1日)以来的毫秒数

→ getFullYear()返回四位数的年份,getYear()返回二位或四位的年份,常用于获取年份getFullYear()。

获取星期几使用getDay():0表示周日,1表示周一,6表示周六。

各部分时间表示的范围:除号数(一个月中的每一天)外,其他均从0开始计时。例如,月份0~11,0表示1月份,11表示12月份。

☆示例

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>时钟特效</title>
</head>
<body>
    <div id="myclock"></div>
    <script type="text/javascript">
        function disptime(){
            var today = new Date();//获得当前时间
            var hh = today.getHours();//获得小时
            var mm = today.getMinutes();//获得分钟
            var ss = today.getSeconds();//获得秒
            //设置div的内容为当前时间
            document.getElementById("myclock").innerHTML="现在是:"+hh+":"+mm+":"+ss;
        }
        disptime();
    </script>
</body>
</html>

2.4.2 Math对象

Math对象提供了许多与数学相关的功能,它是JavaScript的一个全局对象,不需要创建,直接作为对象使用就可以调用其属性和方法。

Math对象的常用方法

方法

说明

示例

ceil()

对数进行上舍入

Math.ceil(25.5);返回26

Math.ceil(-25.5);返回-25

floor()

对数进行下舍入

Math.floor(25.5);返回25

Math.floor(-25.5);返回-26

round()

把数四舍五入为最接近的数

Math.round(25.5);返回26

Math.round(-25.5);返回-26

random()

返回0~1中的随机数

Math.random();例如,0.627360881412312

random()方法返回的随机数包括0,不包含1,且都是小数,如果想选择一个1~100中的整数(包括1和100),则代码如下:

var iNum = Math.floor(Math.random()*100+1);

如果希望返回的整数为2~99,只有98个数字,第一个值为2,则代码如下:

var iNum = Math.floor(Math.random()*98+2);

☆示例

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>使用ceil()和random()随机选择颜色</title>
</head>
<body>
    <div>
        本次选择的颜色是:<span id="color"></span>
        <input type="button" value="选择颜色" onclick="selColor();"/>
    </div>
    <script type="text/javascript">
        function selColor(){
            var color = new Array("红色","黄色","蓝色","绿色","橙色","青色","紫色");
            var num = Math.ceil(Math.random()*7)-1;
            document.getElementById("color").innerHTML=color[num];
        }
    </script>
</body>

2.5 定时函数

2.5.1 常用定时函数

1、setTimeout()

setTimeout()用于在指定的毫秒后调用函数或计算表达式。

语法:

setTimeout(“调用的函数名称”,等待的毫秒数);

☆示例

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>定时函数</title>
</head>
<body>
<input name="s" type="button" value="显示提示消息" onclick="timer()"/>
<script type="text/javascript">
    function timer(){
        setTimeout("alert('3 seconds')",3000);
    }
</script>
</body>
</html>

→ 3000表示3000毫秒,即3秒。

→ 单击“显示提示消息”按钮调用timer()函数时,弹出一个警示对话框,由于使用了setTimeout()函数,因此调用函数timer()后,需要等待3秒,才能弹出警示对话框。

2、setInterval()

setInterval()可按照指定的周期(以毫秒计)来调用函数或计算表达式。

语法:

setInterval(“调用的函数名称”,周期性调用函数之间间隔的毫秒数);

setInterval()会不停地调用函数,直到窗口被关闭或被其他方法强制停止。

经验:setTimeout()只执行一次函数,如果要多次调用函数,则需要使用setInterval()或者让被调用的函数再次调用setTimeout()。

3、clearTimeout()和clearInterval()

clearTimeout()函数用来清除由setTimeout()函数设置的定时器。

语法:

clearTimeout(setTimeout()返回的ID值);

clearInterval ()函数用来清除由setInterval()函数设置的定时器。

语法:

clearInterval(setInterval()返回的ID值);

补充:

1、 URL 统一资源定位符

2、 open(“弹出窗口的url,”窗口名称”,”窗口特征”)

特征以“,”分隔

例:open(http://www.baidu.com,”百度搜索”, width=250,height=250,left=250,top=250”);

3、 对话框使用“\n”进行换行。

4、 属性cursor

值:pointer:IE6.0和hand一样。竖起一只手指的手形光标。就像通常用户将光标移到超链接上时那样。

5、 表单元素,value,代表取值,value=内容,代表赋值。

普通元素,innerHTML可以用于赋值和取值操作。

赋值,例如:元素.innerHTML=内容,HTML标签会被自动解析;

取值,例如:元素.innerHTML,会将该元素的内容全部获取,HTML标签页会获取展示。

猜你喜欢

转载自www.cnblogs.com/lccl/p/10156542.html
今日推荐