JS-宿主对象DOM

DOM:Document Object Model文档对象模型。JS中通过DOM来对HTML文档进行操作。

节点Node:构成HTML文档最基本的单元,分为四类。

  • 文档节点:整个HTML文档
  • 元素节点:HTML文档中的HTML标签
  • 属性节点:元素的属性
  • 文本节点:HTML标签中的文本内容

浏览器已经为我们提供了文档节点对象document,可以在页面中直接使用,文档节点代表的是整个网页。

document.getElementById();

document.innerHTML();

事件:用户和浏览器之间的交互行为,比如:点击按钮,鼠标移动等等。

onload()事件在整个页面加载完成之后才触发,为window对象绑定一个onload事件。

DOM查询:

获取元素节点:通过document对象调用

  • getElementById():通过id属性获取一个元素节点对象
  • getElementsByTagName():通过标签名获取一组元素节点对象
  • getElementsByName():通过name属性获取一组元素节点对象 (表单项)

获取元素节点的子节点:通过具体的元素节点调用

  • getElementsByTagName():返回当前节点的指定标签名后代节点
  • childNodes:表示当前节点的所有子节点(会把空白文本也当成节点)
  • children:表示当前节点的所有子元素(更符合需求)
  • firstChild:表示当前节点的第一个子节点(会把空白文本也当成节点)
  • firstElementChild:表示当前元素的第一个子元素(不支持IE8以下的浏览器)
  • lastChild:表示当前节点的最后一个子节点
  • parentNode:表示当前节点的父节点(父节点肯定是元素)
  • previousSibling:表示当前节点的前一个兄弟节点
  • previousElementSibling:表示当前节点的前一个兄弟元素
  • nextSibling:表示当前节点的最后一个兄弟节点

innerhtml与innerText区别:

  • innerHTML返回的是标签内的所有HTML内容,包括HTML标签
  • innerText返回的是标签内的所有文本内容,不包括HTML标签(自动将标签去除)

在document中有一个属性body,它保存的是body的引用:document.body;

document.documentElement保存的是html根标签;

document.all代表页面中所有的元素;(docume.getElementsByTagName("*"));

根据元素的class属性值查询一组元素节点对象(不支持IE8以下浏览器):document.getElementsByClassName("box1");

document.querySelector(".box1 div"); 可以将一个css选择器的字符串作为参数,查询一个元素节点对象(只会返回第一个)。

document.querySelectorAll(".box1 div"); 用法类似,返回所有;

DOM增删改:

var li = document.createElement('li'); 创建一个元素节点,标签名作为参数。

var text = document.createTextNode('北京'); 创建文本节点;

li.appendChild(text); 向一个父节点添加子节点;

a.insertBefore(new,old); 在指定的子节点前插入新的子节点,由父节点a调用;

a.replaceChild(new,old); 使用指定的子节点替换已有的子节点,由父节点a调用;

a.removeChild(old); 删除子节点;(子节点.parentNode.removeChild(子节点);)

confirm(str); 用于弹出一个带有确认和取消的提示框;

使用DOM操作CSS样式:操作内联样式

通过JS修改元素样式,语法:元素.style.样式名 = 样式值;(内联样式,style只能读取内联样式)

获取元素当前显示样式,语法:元素.currentStyle.样式名; (CSS样式表也可读取,只有IE浏览器支持);

其他浏览器获取样式:getComputedStyle(a,b); a要获取样式的元素,b可以传递一个伪元素,一般都传null,该方法会返回一个对象,对象中封装了当前元素对应的样式。IE8不支持。(getComputedStyle(a,null).width;)

*** currentStyle和getComputedStyle都是只读的,只能通过style修改。

- 定义一个函数,用来获取指定元素的当前样式

-参数: obj 要获取样式的元素;name 要获取的样式名

function getStyle(obj,name){
    if(window.getComputedStyle){
        //正常浏览器的方式,具有getComputeStyle()方法
        return getComputedStyle(obj,null)[name];
    }else{
        //IE8的方式,没有getComputedStyle()方法
        return obj.currentStyle[name];
    }
    //return window.getComputedStyle ? getComputedStyle(obj,null)[name] : obj.currentStyle[name];
}

其他样式相关属性:

clientWidth,clientHeight这两个属性可以获取元素的可见宽度和高度,返回数字(不带px,包括内容区和内边距)。只读属性,不可修改属性值。

offsetWidth,offsetHeight 获取元素整个的宽度和高度,包括内容区,内边距和边框,不带px。

offsetParent 可以用来获取离当前元素最近的开启了定位的祖先元素,没有则返回body。

offsetLeft 当前元素相对于其定位父元素的水平偏移量;

offsetTop 当前元素相对于其定位父元素的垂直偏移量;

scrollHeight,scrollWidth 获取元素整个滚动区域的高度

scrollLeft 获取水平滚动条滚动的距离

scrollTop 获取垂直滚动条滚动的距离

当scrollHeight - scrollTop = clientHeight时,表示垂直滚动条滑动到底了;

当scrollWidth - scrollLeft = clientWidth时,表示垂直滚动条滑动到底了;

onscroll:滚动条滚动时触发的事件;

事件对象:当事件的响应函数被触发时,浏览器每次都会将一个事件作为实参传递进响应函数,在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标,键盘哪个键被按下,鼠标滚轮滚动的方向等等。(IE8中将事件对象作为window对象的属性保存的)

事件冒泡(Bubble):所谓事件的冒泡指的是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发。

在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消冒泡。

event.cancelBubble = true; // 取消冒泡

事件的委派:

- 将事件统一绑定给元素共同的祖先元素,这样当后代元素上的事件触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件。

- 事件委派是利用了冒泡,通过委派可以减少事件绑定的次数,提高程序的性能。

event.target 表示触发事件的对象

事件的绑定:

同一个元素的点击事件只能绑定一个onClick()事件,多个会被覆盖。

addEventListener(‘click’,callback,false)

- 通过这个方法也可以为元素绑定响应函数

- 参数:1.事件的字符串,不要on;2.回调函数,当事件触发时该函数会被调用;3.是否在捕获触发事件,需要一个布尔值,一般传false

- 使用addEventListener()可以同时为一个元素的相同事件绑定多个响应函数,当事件触发时,响应函数将会按照函数的绑定顺序执行。(IE8不支持)

- 回调函数中的this是绑定事件的对象

attachEvent(‘onclick’,callback)

- 在IE8中可以使用attachEvent()来绑定事件

- 参数:1.事件的字符串,要on;2.回调函数

- 此方法可以同时为一个事件绑定多个处理函数,不同的是它是后绑定先执行,执行顺序和addEventListener()相反。

- 回调函数中的this是window(可以使用bind函数转换this,使其指向绑定事件的对象)

事件的传播:

如果希望在捕获阶段就触发事件,可以将addEventListener()的第三个参数设置为true。

设置对事件的捕获:obj.setCapure(); 只有IE支持

取消对事件的捕获:obj.releaseCapture(); 

拖拽:

滚轮:onmousewheel鼠标滚轮事件,会在滚轮滚动时触发(火狐不支持,需用DOMMouseScroll绑定滚轮事件)

event.wheelDelta 判断滚轮滚动的方向,正为向上,负为向下(火狐使用event.detail)

 键盘事件:一般绑定给一些可以获取到焦点的对象或者是document

onkeydown 按键按下

onkeyup 按键松开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值