- 节点(Node)是构成HTML文档的最基本的单元。
- 常用节点分为四类:
- 文档节点:整个HTML文档
- 元素节点:HTML文档中的HTML标签
- 属性节点:元素的属性
- 文本节点:HTML标签中的文本内容
- 节点的属性
- 获取并修改文本节点的属性
- <script>得写在下面<button>下面,不然找不到// 因为浏览器在加载一个页面时,是按照自上而下的顺序加载的,读到js时DOM对象还没加载。
- 使用window.onload可以保证整个页面加载完成后再执行。//可以把head里的代码写到window.onload里。
- 但是先加载了js会等等再执行,对性能处理不好。
- 获取body标签的方法
// 第一种,像获取其他标签一样 var body = document.getElementsByTagName("body")[0]; // 第二种,调用document中的body属性 var body = document.body;
- document中的其他属性
// html根标签 var html = document.documentElement; // 所有元素 var all = document.all; all = document.getElementsByTagName("*");
- 根据元素的class属性查询一组元素节点(IE9+)
- 根据一个CSS选择器来查询元素节点对象
- 使用该方法总会返回第一个元素,且只会返回一个 --> 可用querySelectorAll(返回数组)
- 虽然IE8中没有getElementsByClassName,但可以使用querySelector代替
- 一些DOM对象方法(都是document.以下方法)
- DOM增删改相关操作--添加新节点的两种方法
- 但是第二种方法相当于把整个innerHTML重新赋值,所以一般两种方法结合使用。比如:
- 取消标签<a>自动跳转的默认行为:
- 法1:在响应函数内加入return false;
- 法2:写成<a href="javascript:;">;
- 向<table>里增加新行出现的问题:
- 解决方法:加到<table>下面的<tbody>里
- 为什么单机响应函数中的this 不等于 allA[i]?
- for循环会在页面加载完成后立即执行,而响应函数在超链接被点击时才执行。当响应函数执行时,for循环早已执行完毕。当for循环停止时i=3(共有3个超链接),所以在响应函数中用allA[i]相当于是allA[3](undefined)。
- 通过JS修改元素的样式:元素.style.样式名 = 样式值
- 读取元素的内联样式:元素.style.样式名
- 通过style属性读取和修改的都是内联样式,无法读取样式表中的样式。
- 通过JS获取元素当前正在显示的样式:元素.currentStyle.样式名 //只有IE浏览器支持,也可元素.currentStyle[样式名]
- 如果当前元素没有设置样式,则获取它的默认值。
- 只读不能修改,要修改只能通过style属性
- 其他浏览器获取元素当前正在显示的样式:getComputedStyle(元素, null ) .样式名 //是window的方法,也可getComputedStyle(元素, null ) [样式名]
- 需要两个参数:① 获取样式元素 ② 传递一个伪元素,一般都设null
- 该方法会返回一个参数,对象中封装了当前元素对应的样式,可以通过对象.样式名读取样式。
- 如果获取的样式没有设置,则会获取到真实值,而不是默认值。
- 比如width:(真实值:335px)(默认值:auto)。
- 该方法不支持IE8及以下浏览器。//正常浏览器支持(排斥IE8)
- 只读不能修改,要修改只能通过style属性
- 如何兼容:(不用判断浏览器版本获得样式)
- 第一种写法虽然可以用,但是不该把兼容问题丢给try-catch处理
- 第二种写法借用了浏览器找不到属性会返回undefined
- 但是一定要写window.getComputedStyle 而不是getComputedStyle,因为前者是一个对象的属性(找不到返回undefined),而后者是变量(找不到就报错)。
- undefined转为Boolean值是"false"。
- 注:if-else单结构可以写成三元运算符(? : ),我认为可读性不强
- 其他样式操作属性
- 可见宽度/高度指的是 内容+内边距(content+padding),没有边框
- 该属性不带px,返回的是一个数字可以计算
- 只读不能修改,要修改只能通过style属性
- 获取元素整个宽度/高度 (content+padding+border)
- offsetParent可以用来获取当前元素的定位父元素,即box1会获取到离当前元素最近的开启了定位的祖先元素(默认的static不算开启定位)
- 如果均没开启定位,就返回body
- offsetLeft:当前元素相对于其定位父元素的水平偏移量
- offsetTop:当前元素相对于其定位父元素的垂直偏移量
- scrollHeight可以获取元素整个滚动区域的高度
- clientHeight可以获取元素整个可视区域的高度
- scrollWeight可以获取元素整个滚动区域的宽度
- scrollLeft可以获得水平滚动条滚动的距离
- scrollTop可以获得垂直滚动条滚动的距离
- 当满足 scrollHeight - scrollTop == clientHeight 时,说明垂直滚动条到底了。
- 如果为表单添加disabled="disabled",则表单项将变成不可用状态
- 为了防止scrollTop不是整数,