dom知识点

---------------------------------DOM 文档对象模型-------------------------- --浏览器执行过程:  服务器将浏览器请求的内容(1.html 页面的内容全部发回浏览器,浏览器接收到代码后,就由上到下的逐行解释代码  并将其中的html+css 代码翻译成图形界面给用户),通过服务器的卡西尼监听端口,执行服务器中的物理路径页面.  浏览器解释HTML+CSS生成DOM树,生成图形界面.

js使用两种主要的对象模型:  1.浏览器对象模型(BOM):提供访问浏览器各个功能部件,如:浏览器窗口本身,浏览历史等操作方法;  2.文档对象模型(DOM):提供了访问浏览器窗口内容

 文档对象模型定义了 js 可以进行操作的浏览器,描述了文档对象的逻辑结构  及各功能部件的标准接口. 1.元素的事件后 == 一段完整的JavaScirpt代码 onclick="onClick()"是可以的,    相当于当onclick事件触发 的时候执行"onClick()"方法代码 ; onclick=onClick();是错误的.    2. js中事件调用与执行的问题:    btn.onclick=onClick;-->js中注册事件,当onclick事件触发时执行onClick()方法.    btn.onclick=onClick(); -->执行的时候先调用onClick()方法执行内部代码,        之后将onClick();方法的的返回值 赋值给btn.onclick       1.如果onClick()方法没有返回值,则就是将undefined返回,          由于btn.onclick事件不支持undefined返回值,所以报错       2.如果onClick()方法有返回值,则将返回值赋值给btn.onclick

3.window对象成员:(相当于DOM中的根对象)  1.在使用window对象成员属性的时候,可以省略 "window." ----------------------------------------------------------------------------------------------------- 4.document属性:   1.write : document.write("  "); 用于在当前位置输出文本.              write只能在页面的执行流中加载,才会与原有内容融合在一起              不能在事件中,否则会覆盖(冲掉)之前的内容.      2.可以使用document.write();在页面中动态的画入内容      3.document.GetElementById("id名");-->根据元素的id获得对象,网页中id不能重复.              若重复了,则只管id重复元素的第一个元素      4.var txts = document.GetElementsByName()-->根据元素的name属性,获得返回一个元素对象数组.可以对其进行遍历.

  5.var models= document.GetElementsByTagName();-->根据标签名 获得元素对象, 返回数组

  6.设置元素对象的样式通过:  元素对象 . style.backgroundColor="red";

  7.confirm(); 弹出是否真正关闭的提示框.

  8.window.navigate("网址"); 导航到指定网站.---可应用于跳转指定页面

  9.setInterval("code",time) 定时器---clearInterval(指定要取消的定时器)---取消定时器    code:第一个参数为时间到达时执行的代码,    time:第二个参数为间隔多长时间执行一次(单位毫秒)    setInterval();的返回值表示定时器的编号,因为可以指定多个定时器,可以根据编号选择所要停止的定时器

   使用: setInterval(注册事件,2000);--->举例: setInterval(onInterval , 2000);            setInterval("执行代码",1000);

  10.setTimeout(); 只执行一次的定时器. clearTimeout();清除该定时器      11.parseInt("100px",10); 将第一个参数的字符串"尽力的"解析成10进制数 ---------------------------------------------------03-15------------------------------------

5.window对象的属性:  window.onload事件 --当页面元素加载完毕后,才会触发.  1.重新导向新的地址: window.location.href="http://www.baidu.com";  2.刷新页面:window.location.reload();

 3.window.event:---->非常重要的属性,用来获得发生事件时的信息   returnValue属性:如果将returnValue设置为false,就会取消默认事件的处理       <a href>在超链接的onclick里面禁止访问href的页面.<a href="http://www.baidu.com" onclick="returnValue=false;">百度</a>       <form>在表单校验的时候禁止提交表单到服务器,防止错误数据提交给服务器,防止页面刷新      <form>       <input type="button" value="删除" onclick="window.event.returnValue=confirm('真的要删除?')"/>      </form>   直接 return false 也可以阻止当前行为. ---------------关于 returnValue 和 return false 的区别----------------------------   1.在onclick里面 window.event.returnValue=false; 不执行后续动作(a就是导航到href页面,type="submit"提交表单)   2.在onclick里面return false;也可以达到同样的目的    举例:     function func1()  // 执行后返回值为 func1     {      return "func1";     }     function func2()  //执行后并没有返回 func1()方法的返回值,如果想获得返回值     {      //可以写: return func1();从而获取func1的返回值      func1();     }       <a href="http://www.taobao.com" onclick="return function(){return false;}">淘宝</a>   上面这个超链接可以跳转,是因为onclick 返回了一个匿名函数. 在其后加() 便不能跳转   如果把响应函数放入单独的函数 onclick="myclick();" 相当于 btn.onclick=function(){myclick();}   所以即使在myclick()里面return false,不影响function(){myclick();}返回值   通过window.event.returnValue也能简化问题,因为只是普通的赋值,所以不涉及返回值问题   这样即使是onclick="myclick();" 那么如果myclick里面window.event.returnValue=false也能阻止后续行为 -----------------------------------------------------------------------------------

  srcElement属性: 获得事件源对象.几个事件共享一个事件响应函数用(获得当前所触发对象)   clientX , clientY:发生事件时鼠标在客户区的坐标,   screenX, screenY:发生事件时鼠标在屏幕上坐标   offsetX, offsetY: 发生事件时鼠标相对于事件源的坐标(比如点击按钮时出发onclick)   button: 发生事件时鼠标按键,1-左键  2-右键  3-左右键同时按下 <body  onmousedown="if(event.button==2){alert('禁止复制');}">   altKey属性 : bool类型,表示发生事件时 alt键 是否被按下. 还有:ctrlKey , shiftKey -------------------------------------------------------------------------------------------------------------- 6.DOM的动态创建:  1.调用document的createElement方法来创建具有指定标签的DOM对象,     然后通过调用某个元素的appendChild方法将创建元素添加到相应的元素下     也可以注册事件, 获取动态生成元素的ID值.        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.innerText 与 innerHTML   innerText:IE支持,但是火狐不支持,要使用textContent   innerHTML:解析的时候能够识别HTML标签  3. 动态创建表格:   问题:通过dom动态给table加行的时候,发现IE6下没效果,使用开发人员工具发现   IE6下自动增加了一个tbody标签,通过代码appendChild的tr没有加到tbody下,所以显示不出来.   经过查看,发现通过t1.tBodies.appendChild(tr1) 可以加到tBody标签中. 但是IE8又失效了   这就是浏览器兼容问题的例子.   解决办法: 在table标签中先加入tBody标签,然后将表格动态加载到tBody标签中.    4.this 与 srcElement 区别   this:表示当前监听事件的对象,当前冒泡的对象,当onclick="func()",         在func()方法中使用this则代表当前window对象,即onclick中定义         了一个匿名方法,匿名方法属于window对象.   srcElement:当前触发事件的事件源对象.

 5.createTextNode("asd")创建文本节点     createElement("div") 创建元素标签类型 ----------------------------------------------------------------- DOM事件:  1.onload(); 页面所有元素加载完毕后触发.  2.unload(); 页面关闭后触发.  3.onbeforeunload(): 页面关闭之前触发.可以用confirm()让用户选择     是否关闭.  4.window.history.back()/go()-->history用栈实现,先进后出.     hashmap也可以记录浏览器访问路径  5.document write/writeln : 当dom树创建后调用此方法的话     会重新创建一个新的dom树,前面的内容就没有了

--------------------------------------事件冒泡---------------------- 1.阻止事件冒泡:  IE中阻断事件冒泡 window.event.cancelBubble=true;  event.preventDefault 1.事件冒泡: 当元素父子级元素中都添加了onclick事件后,    点击子元素时,同时父级元素的onclick事件也会触发.    要考虑浏览器兼容问题(<p>标签在<div>标签中 就不会响应) ------------------------------------------------------------------- 层的位置:  display:none; 不占用空间位置  visiability:hidden; 隐藏后占用位置 当改变层的位置的时候:必须设置position:absolute;绝对定位.   position: static 默认的;  fixed:固定位置(不该变位置);    relative:相对于某个元素进行布局(新闻"热"点图片布局)

获得HTML的根节点:   document.documentElement 获得浏览器可见区域的宽度与长度:   document.documentElement.clientWidth.   document.documentElement.clientHeight.  元素的实际宽度与长度(前提是元素提前显示出来才能获取长宽) :   offsetHeight   offsetWidth 获得滚动条的高度   scrollTop 浏览器滚动事件:   window.onscroll() 浏览器大小改变事件   window.onresize() ----------------------------------------------------------------------- 设置元素属性:  var divMain= document.getElementById("divMain")  divMain.setAttribute("name","波波"); 参数1.key  2.value 移除元素属性:  divMain.removeAttribute("name");

----------------------------------------------------------------------- 表单元素form:  <form action="提交路径目标" method="post(get)">  <inout type="text" name="txt"/>  <input type="submit" value="提交"/>  </form> 通过按钮点击事件,将一大段代码 传送到 服务器. 文本内容指定name属性后 通过httpWatch工具能够看到提交的文本内容 method方式: post 与 get  post: 提交表单后域名地址栏不显示提交的内容  get: 提交表单后域名地址栏显示所提交的内容

form表单中的onsubmit()事件:  onsubmit();提交表单之前触发; 在事件内部可以进行判断  阻断当前表单的提交操作. return false或 window.event.returnValue=false;  如果想通过button按钮提交表单,必须给表单注册submit事件.

----------------------------------------window.event.keyCode-----------------------------------  响应文本框的onKeyDown事件,window.event.keyCode获得用户点击的keyCode  回车实现Tab跳转   if(window.event.keyCode == 13){window.event.keyCode = 9;}   <body onkeydown="if(window.event.keyCode==13){window.event.keyCode=9;}">

   keyCode    ascii码说明:    8:退格键    46:delete    37-40: 方向键    48-57:小键盘区的数字    96-105:主键盘区的数字    110、190:小键盘区和主键盘区的小数点    189、109:小键盘区和主键盘区的负号

   13:回车    9: Tab 就是那个把焦点移到下一个文本框的东东。

 

 

posted @ 2012-07-24 07:52  zxp19880910  阅读(191)  评论(0编辑  收藏  举报