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");//获取btn
var div = document.querySelector("div");//获取div
btn.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/block
var 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 | 鼠标按下触发 |