什么是DOM
- 文档对象模型(document object model)
- 网页里面的各个元素都是树形结构
js操作网页
-
找对象
document.getElementById()通过id来找对象document.getElementsByTagName()通过标签名来找对象, 返回的是一个数组, 即便只有一个元素document.querySelector()通过css选择器来找对象, 只找第一个document.querySelectorAll()通过css选择器来找对象, 找到所有对象, 返回"数组"document.getElementsByClassName()通过类名来找对象, 返回的是一个"数组"
-
操作对象
- 改内容,
object.innerHTML,object.innerText - 改属性,
对象.属性名 = 属性值
document.getElementById("image").src="landscape.jpg";- 改样式,
对象.style.样式名 = 样式值 - css怎么写, js就怎么写, 但是如果有
-, 需要改成驼峰命名
document.getElementById("p2").style.color="blue"; document.getElementById("p2").style.fontFamily="Arial"; document.getElementById("p2").style.fontSize="larger";dom事件
-
onclick鼠标点击触发 -
onmouseover鼠标移入触发 -
onmouseout鼠标移出触发 -
追加的方式
对象.onclick = function(){}
-
onfocus,input框获取焦点时触发 -
事件监听
addEventListener -
以下两行, 效果一样
document.getElementById("myBtn").addEventListener("click", displayDate); document.getElementById("myBtn").onclick = displayDate;- 还有
onmouseover,onmouseout
element.addEventListener("mouseover", myFunction); element.addEventListener("mouseout", myThirdFunction);- 移除监听事件
removeEventListener()
element.removeEventListener("mousemove", myFunction);节点操作
appendChild()追加一个子元素到最后insertBefore(a,b)把子元素, 插入到某个特定的子元素之前, 把a插到b之前- 删除子元素
parentNode.removeChild(子元素对象), 需要父元素来调用 - 替换子元素
parentNode.replaceChild(a,b), 用a把b换掉, a和b都是子元素
var para = document.createElement("p"); var node = document.createTextNode("这是一个新的段落。"); para.appendChild(node);以上三行, 相当于创建
<p>这是一个新的段落。</p>document.createTextNode, 创建一个文本节点- 注意一点,
document.getElementsByTagName(), 可以用下标来获取值, 但是, 不是一个数组.
引荐一位前端大神
阮一峰 - 改内容,
专栏地图
- [做特效, 学JS] -- 00 开篇
- [做特效, 学JS] -- 01 超链接鼠标移入变大变红, 鼠标移除还原
- [做特效, 学JS] -- 02 鼠标移入, div变大变红, 鼠标移出, 回复原貌
- [做特效, 学JS] -- 03 网页换肤
- [做特效, 学JS] -- 04 复选框全选
- [做特效, 学JS] -- 05 复选框全选/全不选
- [做特效, 学JS] -- 06 复选框全选/全不选/反选
- [做特效, 学JS] -- 07 网页选项卡
- [做特效, 学JS] -- 08 倒计时
- [做特效, 学JS] -- 09 正经的 全选和反选
- [做特效, 学JS] -- 10 自动生成表格
- [做特效, 学JS] -- 11 加餐-神奇的正则表达式
- [做特效, 学JS] -- 12 加餐-DOM扩展
- [做特效, 学JS] -- 13 加餐-聊聊BOM