1.0 获取元素
3.1根据ID名获取
document.getElementById('id名')//返回的是 一个元素对象(满足条件的第一个元素对象)补充:console.dir();//打印的是返回的元素对象 更好的查看里面的属性和方法
3.2 根据标签名获取
document.getElementsByTagName('标签名') //返回的是 带有指定标签名的对象的集合(以伪数组的形式存储的,数组元素是元素对象)注意:1、因为得到的是一个对象的集合,所以我们想要操作里面的元素就需要遍历2、得到的对象是动态的3、如果页面中只有一个li 返回的还是伪数组的形式4、如果页面中没有这个元素 返回的是空的伪数组的形式
3.2 根据class名获取
document.getElementsByClassName("abc");// 获取过来的元素对象 是放在一个伪数组里 如果想对元素进行操作 那么必须从数组里边获取出来才可以// 有一个返回值 返回值就是这个伪数组// 通过类名 获取元素对象的时候 ie8及以下 不兼容
3.3通过HTML5新增的方式获取
1、获取单个的元素对象document.querySelector(可以写 标签名、类名、id名、css的选择器)// ie7及以下 不兼容例:console.log(document.querySelector("div"));// 注意:(只获取当前页面满足id名的第一个元素对象)2、获取多个的元素对象document.querySelectorAll(可以写 标签名、类名、id名、css的选择器) // 有一个返回值 返回值就是这个伪数组// 获取过来的元素对象 是放在一个伪数组里 如果想对元素进行操作 那么必须从数组里边获取出来才可以console.log(document.querySelectorAll("#box"));console.log(document.querySelectorAll("div"));console.log(document.querySelectorAll(".abc"));
3.4 特殊元素获取
1、获取body元素:document.body//返回body元素对象2、获取html元素:document.documentElement//返回html元素对象
4.0 事件基础—触发响应机制
4.1事件三要素
1、事件源:事件被触发的对象 谁(比如按钮)2、事件类型:如何触发 什么事件(比如鼠标点击onclick)3、事件处理程序:通过一个函数赋值的方式完成例子:// 点击一个按钮,弹出对话框var btn = document.getElementById("btn");btn.onclick = function () {alert("哦拉吾游");};
4.2 事件的执行步骤
1、获取事件源2、注册事件(绑定事件)3、添加事件处理程序(采用函数赋值形式)例子://点击div 控制台输出 我被选中了var div = document.querySelector("div");div.onclick = function () {console.log("我被选中了");};
5.0操作元素
5.1 改变元素内容(获取或设置)
element.innerText:从起始位置 到 终止位置的内容,但会去除html标签以及空格和换行element.innerHTML:从起始位置 到 终止位置的内容,包括html标签以及空格和换行
5.2 案例
例子:// 当我们点击了按钮,div里面的文字会发生变化<button>显示当前系统时间</button><div>某个时间</div><script>var btn = document.querySelector("button");//获取btnvar div = document.querySelector("div");//获取divbtn.onclick = function () {//绑定点击事件div.innerHTML = getDate();};//获取当前日期function getDate() {var date = new Date();var year = date.getFullYear();var month = date.getMonth() + 1;var dates = date.getDate();var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];var day = date.getDay();return ("今天是:" + year + "年" + month + "月" + dates + "日 " + arr[day]);}</script>
总结:innerText和innerHTML的区别
- 获取内容时的区别:
innerText会去除空格和换行,而innerHTML会保留空格和换行 - 设置内容时的区别:
innerText不会识别html,而innerHTML会识别
5.3常见元素的属性操作
1、innerText、innerHTML
2、src、href
3、id、alt、title
案例1://修改元素属性 src// 1. 获取元素 2. 注册事件 3.处理程序var ldh = document.getElementById("ldh");var zxy = document.getElementById("zxy");var img = document.querySelector("img");zxy.onclick = function () {img.src = "images/zxy.jpg";img.title = "张学友思密达";};ldh.onclick = function () {img.src = "images/ldh.jpg";img.title = "刘德华思密达";};
案例2://根据不同时间,页面显示不同图片,同时显示不同的问候语// 1. 获取元素var img = document.querySelector("img");var div = document.querySelector("div");// 2.得到当前的小时数var date = new Date();var h = date.getHours();//3.判断小时数改变图片和文字信息if (h < 12) {img.src = "./images/s.gif";div.innerHTML = "亲,上午好,好好写代码";} else if (h < 18) {img.src = "./images/x.gif";div.innerHTML = "亲,下午好,好好写代码";} else {img.src = "./images/w.gif";div.innerHTML = "亲,晚上好,好好写代码";}
5.4表单元素的属性操作
- DOM可以操作表单元素属性:type、value、checked、selected、disabled
- 可以通过value来修改表单里面的文字内容(不能用innerHTML属性,因为这个是普通盒子比如div盒子里的内容)
- 如果想要某个表单被禁用 不能再点击 用disabled(比如 想要按钮button禁用)
btn.disabled=true;this.disabled=true;//this指向 事件函数的调用者例子1:// 1. 获取元素var btn = document.querySelector("button");var input = document.querySelector("input");// 2. 注册事件 处理程序btn.onclick = function () {input.value = "被点击了";// 如果想要某个表单被禁用 不能再点击 disabled 我们想要这个按钮 button禁用// btn.disabled = true;this.disabled = true;};
5.5仿京东显示密码
- 点击按钮将密码框切换为文本框,并可以查看密码明文
css:.box {position: relative;width: 400px;border-bottom: 1px solid #ccc;margin: 100px auto;}.box input {width: 370px;height: 30px;border: 0;outline: none;}.box img {position: absolute;top: 2px;right: 2px;width: 24px;}html:<div class="box"><label for=""><img src="./images/close.png" alt="" id="eye" /></label><input type="password" id="pwd" /></div>script://1、获取元素var eye = document.getElementById("eye");var pwd = document.getElementById("pwd");//2、注册事件 处理程序var flag = 0;eye.onclick = function () {//点击一次之后,flag一定要变化if (flag == 0) {pwd.type = "text";eye.src = "./images/open.png";flag = 1; //赋值操作} else {pwd.type = "password";eye.src = "./images/close.png";flag = 0;}};
5.6 样式属性操作
- 样式属性操作:可以通过 JS 修改元素的大小、颜色、位置等样式
- element.style:行内样式操作(适合于样式比较少,或者功能简单的情况)
元素对象.style.样式属性=’值’;
注意:1、样式属性采用驼峰命名法:如backgroundColor
2、js修改style样式操作,产生是是行内样式,css权重比较高 - element.className:类名样式操作(适合于样式比较多,或者功能复杂的情况)
注意:class是个保留字,因此使用className来操作元素类名属性
className会直接更改元素的类名,会覆盖原先的类名,如果想要保留原先的类名,可以使用多类名选择器:this.className=’原先的类名 现在的类名’
6.0案例
6.1 修改样式属性
css:div {width: 200px;height: 200px;background-color: pink;}html:<div></div>script:var div = document.querySelector("div");div.onclick = function () {// div.style.属性 属性采用驼峰命名法// div.style.backgroundColor='purple'this.style.backgroundColor = "purple";this.style.width = "250px";
6.2关闭淘宝二维码
html: <div class="box">淘宝二维码<img src="images/tao.png" alt="" /><i class="close-btn">x</i></div>script:// 核心思路:利用样式的显示与隐藏display:none/blockvar btn = document.querySelector(".close-btn");var box = document.querySelector(".box");btn.onclick = function () {box.style.display = "none";};
6.3 循环精灵图
var lis = document.querySelectorAll("li");for (var i = 0; i < lis.length; i++) {//让索引号乘以44 就是每个li大的背景y坐标 index就是我们的y坐标var index = i * 44;// lis[i].style.backgroundPosition = "0 -44px";lis[i].style.backgroundPosition = "0 -" + index + "px";}
6.4显示隐藏文本框内容
<input type="text" value="手机" />script:var text = document.querySelector("input");text.onfocus = function () {// console.log("得到焦点");if (this.value === "手机") {this.value = "";}//获得焦点需要把文本框里面的文字颜色变深this.style.color = "#333";};text.onblur = function () {// console.log("失去焦点");if (this.value === "") {this.value = "手机";}//失去焦点需要把文本框里面的文字颜色变浅this.style.color = "#999";};
6.5 通过className更改元素样式
var test = document.querySelector("div");test.onclick = function () {// this.style.backgroundColor = "purple";// this.style.color = "#fff";// this.style.fontSize = "25px";// this.style.marginTop = "100px";// this.className = "change"; //相当于把当前的类名改为了change 会覆盖原先的类名this.className = "first change"; //如果想要保留原先的类名 可以使用多类名选择器};
6.6 密码框案例
html:<input type="text" /><img src="./images/mess.png" alt="" /><span>请输入6-16位的密码</span>script:var inp = document.querySelector("input");var img = document.querySelector("img");var span = document.querySelector("span");inp.onblur = function () {console.log(inp.value);if (inp.value.length < 6 || inp.value.length > 16) {img.src = "./images/wrong.png";span.innerHTML = "请输入正确位数的密码";span.style.color = "red";} else {img.src = "./images/right.png";span.innerHTML = "输入正确";span.style.color = "green";}};
7.0 常见的鼠标事件
| 鼠标事件 | 触发条件 |
|---|---|
| onclick | 鼠标点击左键触发 |
| onmouseover | 鼠标经过触发 |
| onmouseout | 鼠标离开触发 |
| onfocus | 获得鼠标焦点触发 |
| onblur | 失去鼠标焦点触发 |
| onmousemove | 鼠标移动触发 |
| onmouseup | 鼠标弹起触发 |
| onmousedown | 鼠标按下触发 |
