js DOM的学习笔记


Posted in Javascript onDecember 22, 2011

今天学习了DOM,做了以下一些基础练习……
DOM是Document Object Model文档对象模型的缩写;使用JavaScript操作DOM进行DHTML开发。
学习目标:能够使用JavaScript操作Dom实现常见的DHTML效果。
参考书:张孝祥《JavaScript网页开发——体验式学习教程》
一、DOM的入门:
1、DOM就是HTML页面的模型,将每个标签都做为一个对象,JavaScript通过调用DOM中的属性、方法就可以对网页中的文本框、层等元素进行编
程控制。比如通过操作文本框的DOM对象,就可以读取文本框中的值、设置文本框中的值。
2、DOM也像WinForm一样,通过事件、属性、方法进行编程。
3、CSS+JavaScript+DOM=DHTML(即动态 HTML,是HTML语言的扩展。它可以增加文档与对象的演示文稿效果。)
二、事件:
1、事件:<body onmousedown="alert('哈哈')">当点击鼠标的时候执行onmousedown中的代码。有时间事件响应的代码太多,就放到单独的函
数中:

<script type="text/javascript"> 
function bodymousedown() 
{ 
alert("网页被点坏了,赔吧!"); 
alert("逗你玩的!"); 
} 
</script> 
<body onmousedown="bodymousedown()">

请注意:bodymousedown后的括号不能丢,因为表示调用bodymousedown函数,而不是onmousedown事件的响应函数是bodymousedown。
2、动态设置事件:
可以在代码中动态设置事件响应函数,就像.Net中"btn.Click+="一样。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script type="text/javascript"> 
function bodymousedown() { 
alert("网页被点坏了,赔吧!"); 
alert("逗你玩的!"); 
} 
function f1() { 
alert("我是f1"); 
} 
function f2() { 
alert("我是f2"); 
} 
</script> 
</head> 
<body> 
<input type="button" onclick="document.ondblclick=f1" value="关联事件1" /> 
<input type="button" onclick="document.ondblclick=f2" value="关联事件2" /> 
</body> 
</html>

3、window对象代表当前浏览器窗口,使用window对象的属性、方法的时候可以省略window,比如window.alert('a')可以省略成alert('a')
1)alert方法,弹出消息对话框
2)confirm方法,显示“确定”、“取消”对话框,如果按了【确定】按钮,就返回true,否则就false。
if(confirm("是否继续?"))

alert("确定");

else
{ alert("取消");}
3)重新导航到指定的地址:navigate("http://www.microsoft.com/");
4) setInterval每隔一段时间执行指定的代码,第一个参数为代码的字符串,第二个参数为间隔时间(单位毫秒),返回值为定时器的标识。如:setInterval("alert('hello')",5000);

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>欢迎光临我的主页</title> 
<script type="text/javascript"> 
function scroll() { 
var title = document.title; 
var firstch = title.charAt(0); 
var leftstr = title.substring(1, title.length); 
document.title = leftstr + firstch; 
} //目的是将网页的标题滚动起来 
setInterval("scroll()", 500); 
</script> 
</head> 
<body> 
</body> 
</html>

5) clearInterval取消setInterval的定时执行,相当于Timer中的Enabled=False。因为setInterval可以设定多个定时,所以clearInterval要指定清除那个定时器的标识,即setInterval的返回值。var intervalld= setInterval("alert('hello')",5000);
clearInterval(intervalld);
6) setTimeout也是定时执行,但是不像setInterval那样是定时执行,而是设定时间后只执行一次,clearTimeout也是清除定时。
很好区分:Interval是定时;Timeout是超时之意。如:var timeoutld=setTimeout("alert('hello')",2000);
案例:实现标题栏走马灯的效果,也就是浏览器的标题文字每隔500ms向右滚动一下。提示:标题为document.title属性。
4、1)onload:网页加载完毕时触发,浏览器是一边下载文档、一边解析执行,可能会出现JavaScript执行时需要操作某个元素,这个元素还没有加载,如果这样就要把操作的代码放到body的onload事件中,或者可以把JavaScript放到元素之后。元素的onload事件是元素自己加载完毕时触发,而body 里的onload才是全部加载完成。
2)onunload:网页关闭(或者离开)后触发。在事件中为 "Window.event.returnValue"赋值(要显示的警告消息),这样窗口离开(比如前进、后退、关闭)就会弹出确认消息。如:<body onbeforeunload="Window.event.returnValue='真的要放弃发贴退出吗?'">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script type="text/javascript"> 
//showModelDialog('HTMLPageWindow.htm');//被拦截 
//btn.value = "OK";//报错,因为btn元素还没有被构建 
</script> 
</head> 
<body onload="btn.value='OK';" onbeforeunload="window.event.returnValue='真的要放弃发贴退出吗?文章会被丢失!';"> 
<input type="button" id="btn" value="模态对话框" onclick="showModelessDialog('HTMLPageWindow.htm')" /> 
<input type="text" /> 
<textarea cols="20" rows="20"></textarea> 
</body> 
</html>

5、其它事件:
除了有特有的属性之外,当然还有通用的HTML元素的事件:onclick(单击)、ondblclick(双击)、onkeydown(按键按下)、onkeyup(按键释放)、onkeypress(点击按键)、onmousedown(鼠标按下)、onmousemove(鼠标移动)、onmouseout(鼠标离开元素范围)、
onmouseover(鼠标移动到元素范围)、onmouseup(鼠标按键释放)等。
三、window对象的属性
1、window.location.href="http://www.sina.com.cn",重新导向新的地址,和navigate方法效果一样。window.location.reload()刷新页面。
2、window.event是非常重要的属性,用来获得发生事件时的信息,事件不局限于window对象的事件,所有元素的事件都可以通过event属性取到相关信息。
1) altKey属性,boot类型,表示发生事件时alt键是否被按下,类似的还有ctrlKey、shiftKey属性,例子<input type="button" value="点击" onclick="if(event.altKey)
{alert('Alt点击')}else{alert('普通点击')}"/>;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
</head> 
<body> 
<input type="button" value="href" onclick="alert(location.href)" /> 
<input type="button" value="重定向" onclick="location.href='HTMLPage1.htm'" /> 
<input type="button" value="点击" onclick="if(window.event.ctrlKey){alert('按下了Ctrl')}else{alert('普通点击')}" /> 
<a href="http://www.baidu.com" onclick="alert('禁止访问!');window.event.returnValue=false;">百毒</a> 
<form action="jing.aspx"> 
<input type="submit" value="提交" onclick="alert('数据有问题!');window.event.returnValue=false;" /> 
</form> 
</body> 
</html>

2) clientX、clientY 发生事件时鼠标在客户区的坐标;screenX、screenY发生事件时鼠标在屏幕上的坐标;offsetX、offsetY发生事件时鼠标相对于事件源(比如点击按钮时触发onclick)的坐标。
3)returnValue属性,如果将returnValue设置为false,就会取消默认事件的处理。
4)srcElement:获得事件源对象
5)KeyCode:发生时间时的按键值
6)button:发生时间时鼠标的按键,1为左键,2为右键,3为左右键同时按。<body onmousedown="if(event.button==2){alert('禁止复制')}">
Javascript 相关文章推荐
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
JavaScript函数的4种调用方法详解
Apr 22 Javascript
浅析Bootstrap组件之面板组件
May 04 Javascript
轻松实现js弹框显示选项
Sep 13 Javascript
微信小程序 支付功能开发错误总结
Feb 21 Javascript
20行js代码实现的贪吃蛇小游戏
Jun 20 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 Javascript
本地搭建微信小程序服务器的实现方法
Oct 27 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
浅谈Angular6的服务和依赖注入
Jun 27 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 Javascript
jquery 年会抽奖程序
Dec 22 #Javascript
jQuery中创建实例与原型继承揭秘
Dec 21 #Javascript
jquery随机展示头像代码
Dec 21 #Javascript
JavaScript面向对象程序设计三 原型模式(上)
Dec 21 #Javascript
jquery $.getJSON()跨域请求
Dec 21 #Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
Dec 21 #Javascript
DIV外区域Click后关闭DIV的实现代码
Dec 21 #Javascript
You might like
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JavaScript小技巧整理篇(非常全)
2016/01/26 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
大学本科生的个人自我评价
2013/12/09 职场文书
会计专业自我鉴定
2014/02/10 职场文书
驾驶员培训方案
2014/05/01 职场文书
社区母亲节活动总结
2015/02/10 职场文书
公司总经理岗位职责
2015/04/01 职场文书
运动会报道稿大全
2015/07/23 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python