黑马程序员-DOM(第一讲)

本文详细介绍了DOM(文档对象模型)的概念、用途及解析方式,以及DHTML(动态HTML)的组成与各组件作用,同时展示了如何利用DOM与DHTML技术实现网页交互与动态效果,包括使用JavaScript操作DOM、利用事件与窗口对象实现动态事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DOMDocument Object Model(文档对象模型)

     1)主要用来将标记型文档封装成对象,并将标记型文档中的所有的内容(标签,文本,属性等)都封装成对象。

     2)封装成对象的目的是为了更方便的操作这些文档以及文档中的所有内容,因为对象的出现就可以有属性和行为被调用。

     3)文档对象模型:

      文档:标记型文档

      对象:封装了属性和行为的实例,可以被直接调用

      模型:所有标记型文档都具备的一些共性特征的一个体现,标记型文档(标签,属性,标签中封装的数据)

     4)只要是标记型文档,DOM这种技术都可以对其进行操作

常见的标记型文档:html  XML

     5DOM这种技术是如何对标记型文档进行操作的呢?

要操作标记型文档首先必须对其进行解析,

DOM技术的解析方式:

 

如上图所示:DOM技术的解析方式:将标记型文档解析成一棵DOM树,并将树中的内容都封装成节点对象

注意:这个DOM解析的好处是可以对树这种的节点进行任意操作,比如:增删改查

弊端:这种解析需要将整个标记型文档加载进内存,意味着如果标记型文档体积过大,较为浪费内存空间

另一种解析方式:SAX

(是由一些组织定义的一种民间常用的解析方式,并不是w3c标准,而DOMw3c的标准)

SAX解析:基于事件驱动的解析,获取数据的速度非常快,但不能对标记进行增删改查。

DOM模型有三种:

1)模型1:将html文档封装成对象

2)模型2:在模型1基础上加入了一些新功能,比如可以解析名称空间,(跟Java中的包差不多,就是如果两个类名相同,则必须放到两个包中,以示区分),名称空间一般是这么用的:

如上,可以表示这个<table>标签在这两个空间中的含义不一样,不过一般都用域名进行区分,因为域名不可能重复,是唯一的。

3),模型3:将XML文档封装成了对象

 

 

DHTML:动态的html。(不是一门语言,是多项技术综合体的简称,其中包含了htmlCSSDOMjavascript,那么这四个技术在DHTML页面效果定义时,都处于什么样的角色呢?负责什么样的职责呢?)

HTML:负责提供标签,对数据进行封装,目的是便于对该标签中的数据进行操作。(简单说:用标签封装数据)

CSS:负责提供样式属性,对标签中的数据进行样式的定义。(简单说:对数据进行样式定义)

DOM:负责将标记型文档(标签型文档)以及文档中的所有内容进行解析,并封装成对象,在对象中定义了更多的属性和行为,便于对对象进行操作。(简单说:将文档和标签以及其他内容变成对象)

Javascript:负责提供程序设计语言,对页面中的对象进行逻辑操作。(简单说:负责页面的行为定义,就是页面的动态效果,所以javascript是动态效果的主力编程语言)

 

DHTML+XMLhttpRequest=AJAX

 

BOM:Browser  Object Model(浏览器对象模型)

这个模型方便与操作浏览器

浏览器对应的对象就是window对象,这个可以通过查阅DHTML API.

 

实例:演示Window对象中的navigator

为了演示方便,定义一个事件源,通过对事件源的触发,获取想要的结果。

比如让用户通过点击按钮就可以知道浏览器的一些信息

<input  type=button value=演示Window对象 onclick=windowObjDemo()/>

 

javascript自己定义一个方法windowObjDemo().

那么该javascript的代码该放的哪儿呢?

如果只是关联这一个按钮,紧接着上面的代码写就写,但是如果跟多个按钮关联,就要放的<head></head>之内。

<script  type=text/javascript>

function windowObjDemo()

{

var  name=window.navigator.appName;

var version=window.navigator.appVersion;

Document.write(name=+name+version=+version);

}

</script>

 

2)另一个对象location(地址栏),可以和服务器进行交互

function  windowObjDemo2()

{

var  pro=location.protocol;

var text=location.href;(拿到地址栏中的内容)

alert(pro);

//注意locationz中的属性既可以得到值,也可以给它赋值,并对其值进行了解析。如果是http,还信息链接访问。

//eg:location.href=http://www.baidu.com;

 

}

3)介绍window对象中的一些常见方法

confirm()方法//该方法会弹出一个窗体,包含确定,取消两个按钮,点击确定返回true,点击取消,返回false

setTimeout(表达式,毫秒值)//将过指定毫秒值,执行这个表达式

setInterval(表达式,毫秒值);//每隔指定毫秒值,执行这个表达式(那么如何停止呢?这就要用的下一个方法stopTime()方法,它根据timeid来停止一个方法)

var  Timeid=setInterval(表达式,毫秒值)

clearIntervaltimeid;

moveBy(ix,iy);窗口移动ix,iy

moveTo(ix,iy);窗口移动到ix,iy

open()方法//窗口中的广告就是用这个原理。

close()方法

(下面利用open()方法,close()方法,setTimeout()方法来实现网页中弹出一条广告,3s后再让其自动关闭)

window.html

 <BODY>

  <script type="text/javascript">

  function windowOpenDemo()

  {

  setInterval(

  window.open("abc.html",null,

"height=200,width=400,status=yes,toolbar=no,menubar=no,location=no"),4000);

 

  }

  windowOpenDemo();

  </script>

 </BODY>

 

abc.html

 <BODY>

  <script type="text/javascript">

  setTimeout("close()",3000);

  </script>

 </BODY>

 

3)window中的常见事件

onload事件

(让该事件去指向一个函数,这样当该事件触发的时候就会去执行该函数)

当我们去加载一个页面,当页面中的所有数据(包括文字,图片等)都被加载完毕时,就会触发该事件。

onunload事件(关闭窗口时触发,此时窗口已经消失)

onbeforeunload事件(关闭窗口时触发,此时窗口并没有消失)

4)常见属性

status属性(就是状态栏)

用法:

列如我们让窗体加载完成时,状态栏显示一些特定信息

onload=function(0

{

window.status=啊,美女呀!;

}

 

练习:

流氓网页(怎么关都关不掉)

window.html

<BODY>

  <script type="text/javascript">

 

  

  onload=function(){

  

  open("abc.html","_blank",

"height=200,width=400,status=yes,toolbar=no,menubar=no,location=no");

}

 

  </script>

 </BODY>

abc.html

<BODY>

  <script type="text/javascript">

setInterval("focus()", 1000);

 onbeforeunload=function()

 {

 window.open("abc.html","_blank",

"height=200,width=400,status=yes,toolbar=no,menubar=no,location=no");

}

  </script>

 </BODY>

(运行不出效果,不知是否是浏览器太牛逼了)

 

### 黑马程序员 JavaScript 第二版 课后习题及答案 对于黑马程序员 JavaScript 第二版教材中的课后习题及其答案,这类资源通常由出版社或官方渠道提供。由于版权保护的原因,直接展示具体的题目和解答并不合适。 不过,可以通过合法途径获取这些资料: - 购买正版书籍,其中包含了详细的练习题以及解析。 - 访问官方网站或者联系客服询问是否有配套的学习材料可供下载。 - 加入学习社区,在那里可能会有同学分享自己的解法供交流讨论[^1]。 为了帮助更好地理解JavaScript这门编程语言并掌握其应用技巧,下面给出一些常见的练习方向作为参考: #### 练习一:基础语法巩固 编写一段简单的程序来验证变量声明方式(var, let 和 const)、数据类型的转换规则、运算符优先级等内容。 ```javascript // 定义不同作用域内的同名变量 function scopeTest() { var a = 'global'; if (true) { var a = 'block'; // 这里会提升至函数顶部 console.log(a); } } scopeTest(); ``` #### 练习二:DOM操作实践 创建网页元素并通过JavaScript对其进行增删改查等基本操作,熟悉事件监听器的绑定与触发机制。 ```html <!-- HTML部分 --> <button id="myButton">点击我</button> <script type="text/javascript"> document.getElementById('myButton').addEventListener('click', function(){ alert('按钮被点击了!'); }); </script> ``` #### 练习三:异步处理模拟 利用setTimeout(), setInterval() 或者 Promise对象 来实现定时任务调度功能,了解回调地狱(callback hell)现象及其解决方案async/await. ```javascript new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve('成功'); },2000); }).then(result=>{ console.log(result); }) .catch(error=>console.error(error)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值