Dom笔记

  1. DOM就是HTML页面的模型,将每个标签都作为一个对象,javascript通过调用DOM中的属性、方法就可以对网页中的文本框、层等元素进行编程控制,比如通过操作文本框的DOM对象,就可以读取文本框中的值,设置文本框中的值。DOM也像winform一样,通过事件、属性和方法进行编程序。CSS+javascript+DOM=DHTML
  2. window对象。Window对象代表当前浏览器窗口,使用window对象的属性、方法的时候可以省略window,比如window.alert(‘a’)可以省略成alert(‘a’).(1)alert方法,弹出消息对话框(2)confirm方法,显示“确定”、“取消”对话框,如果按了【确定】按钮,就返回true,否则就false;if(confirm(“是否继续?”)){alert(“确定”);}else{alert(“取消”);}(3)重新导航到指定的地址:navigate(“http://www.rupeng.com”);(4)setinterval每隔一段时间执行指定的代码,第一个参数为代码的字符串,第二个参数为间隔时间(单位毫秒),返回值为定时器的标识:setinterval(“alert(‘hello’)”,5000);(5)clearinvertal取消setinterval的定时执行,相当于Timer中的Enabled=False。因为setinterval可以设定多个定时,所以clearinterval要指定清除那个定时器的标识,即setinterval的返回值。              Var intervalid=setinterval(“alert(‘hello’)”,5000);clearinterval(intervalid);(6)setTimeout也是定时执行,但不是像setinterval那样是重复的定时执行,只执行一次clearTimeout也是清除清除定时,很好区分:interval间隔;timeout:超时。
  3. body、document对象的事件。(1)onload:网页加载完毕时触发,浏览器是一边下载文档、一边解析执行,可能会出现JavaScript执行时需要操作某个元素,这个元素还没有加载,如果这样就要把操作的代码放到body的onload事件中,或者可以把JavaScript放到元素之后,元素的onload事件是元素自己加载完毕时触发,body onload才是全部加载完成时触发。(2)onunload:网页关闭(或者离开)后触发。(3)onbeforeunload:在网页准备关闭(或者离开)后触发。在事件中为”window,event.returnValue”赋值(要显示的警告信息),这样窗口离开(比如前进、后退、关闭)就会弹出确认消息。<body onbeforeunload=” window,event.returnValue=’真的要放弃发帖退出吗?’”>.除了特有的属性之外,当然还有HTML元素的事件:onclick(单击)、oudbclick(双击)、onkeydown(按键按下)、onkeypress(点击按钮)、onkeyup(按键释放)、onmousedown(鼠标按下)、onmousemove(鼠标移动)、onmouseout(鼠标离开元素范围)、onmouseover(鼠标移动到元素范围)、onmouseup(鼠标按键释放)等。
  4. window对象的属性。(1)window.location.href=’http://www.itcast.cn’,重新导向新的地址,和navigate方法效果一样,window.location.reload()刷新页面(2)window.event是非常重要的属性,用来获得发生事件的信息,事件不局限于window对象的事件,所有元素的事件都可以通过event属性取到相关的信息。类似winForm中的e(eventarg).altKey属性,bool类型,表示发生事件时alt键是否按下,类似的还有ctrlKey、shiftKey;clientX、clientY发生事件时鼠标在客户区的坐标;screenX、screenY发生事件时鼠标在屏幕上的坐标;offsetX、offsetY发生事件时鼠标相对于事件源(比如点击按钮时触发onclick)的坐标;returnValue属性,如果将returnValue设置为false,就会取消默认事件的处理,在超链接的onclick里面禁止访问href的页面,在表单校验的时候禁止提交表单到服务器;sreElement,获得事件源对象;keyCode,发生事件时的按键值。(3)clipboardData对象,对粘贴板的操作。clearData(“Text”)清空粘贴板;getData(“Text”)读取粘贴板的值,返回值为粘贴板中的内容;setData(“Text”,value),设置粘贴板中的值。当复制的时候body的oncopy方法被触发,直接return false就是禁止复制。<body oncopy=”alert(‘禁止复制’);return false;”>很多元素也有oncopy、onpaste事件。在网站复制文章的时间,为了防止那些拷贝党不添加文章来源,自动在复制的内容后添加版权声明。Function modifyClipboard(){clipboardData.setData(“Text”,clipboardData.getData(‘Text’)+’本文来源’+location.href);} oncopy=”setTimeout(‘modifyClipboard()’,100)”.用户复制动作发生0.1秒以后再去改粘贴板中的内容,不能直接在oncopy中执行对粘贴板的操作,因此设定定时器,0.1秒以后执行,这样就不在oncopy的执行调用栈上了(4)history操作历史记录。Window.history.back()后退;window.history.forward()前进。也可以用window.history go(-1)后退、window.history.go(1)前进。
  5. document属性。Document是window对象的一个属性,因为使用window对象成员的时候可以省略window.,所以一般直接写document。document的方法:(1)write:向文档中写入内容。writeln,和write差不多,只不过最后添加一个回车<input type=”button” value=”点击” onclick=”document.write(‘<font color=red>你好</font>’)”>在onclick等事件中写的代码会冲掉页面中的内容,只有在页面加载过程中write才会与原有内容融合在一起<script type=”text/javascript”>document.write(“<font color=red>你好</font>”)</script>(2)getElementById方法(非常常用),根据元素的id获得对象,网页中id不能重复使用。也可以直接通过元素的id来引用元素,但是有有效范围、form1.textbox1之类的问题,因此不建议直接通过id操作元素,而是通过getElementsById(3)getElementByName,根据元素的name获得对象,由于页面中元素的name可以重复,比如多个RadioButton的name一样,一次getElementsByName返回值是对象数组。(4)getElemenstByTagName,获得指定标签名称的元素数组,比如getElementsByTagName(“p”)可以获得所有的<p>标签。
  6. DOM的动态创建。(1)document.write只能在页面加载过程中才能动态创建。可以调document的createElement方法来创建具有指定标签DOM对象,然后通过调用某个元素的appendChild方法将新创建元素添加到相应的元素下function showit() {var divMain = document.getElementById("divMain");var btn = document.createElement("input");

btn.type = "button";btn.value = "我是动态的!";divMain.appendChild(btn);}  <div id="divMain"></div><input type="button" value="ok" onclick="showit()”/>(2)几乎所有DOM元素都有innerText、innerHTML属性(注意大小写),分别是元素标签内内容的文本表示形式和HTML源代码,这两个属性是可读可写的。<a href=http://www.baidu.com id=”link1”>传<font color=”Red”>智</font>播客</a> <input type=”button” value=”inner” onclick=”alert(document.getElementById(‘link1’).innerText);alert(document.getElementById(‘link1’).innerHTML)”/>.用innerHTML也可以代替creatElement,属于简单、粗放型、后果自负的创建。

  1.  事件冒泡:如果元素A嵌套在元素B中,那么A被点击不仅A的onclick事件会被触发,B     的onclick事件也会被处罚,触发的顺序是由内而外。
  2.   其他。事件中的this,除了可以使用event.srcElement在事件响应函数中,this表示发生事件的控件。只有在事件响应函数才能使用this获得发生事件的控件,在事件影响函数调用的函数中不能使用,如果要使用则要将this传递给函数或者使用event.srcElement.

This和event.srcElement的语义是不一样的,this就是表示当前监听事件的这个对象,event.srcElement是引发事件的对象。事件冒泡。

9. 易错:修改元素的样式不是设置class属性,而是className属性。案例:网页开关灯的效果。修改元素的不能this.style=”background-color:Red”.

10.  易错:单独修改样式的属性使用”style.属性名”。注意在CSS中属性名在javascript中操作的时候属性名可能不一样。主要集中在那些属性命中含有-的属性,因为javascript中-是不能做属性、类名的。所以CSS中背景颜色是background-color,而javascript中则是style.background;元素样式名是class,在javascript中是className属性;font-size:style.fontSize;margin-top:style.margin Top;

原文地址:https://www.cnblogs.com/lip0121/p/2968927.html