- 事件三要素
书写一个按钮
<body>
<button id="btn">唐伯虎</button>
</body>
目的:点击一个按钮,弹出对话框
一.事件是有三部分组成 事件源 事件类型 事件处理程序 我们也称为事件三要素
(1) 事件源 事件被触发的对象 谁 按钮
var btn = document.getElementById('btn')
首先获取到这个按钮
(2) 事件类型 如何触发 什么事件 比如鼠标点击(onclick) 还是鼠标经过 还是键盘按下
(3) 事件处理程序 通过一个函数赋值的方式 完成
btn.onclick = function () {
alert('点秋香')
}
2.执行事件步骤
<body>
<div>123</div>
</body>
<script>
//执行事件步骤
// 点击div 控制台输出 我被选中了
//1.获取事件源
var div = document.querySelector('div')
//2.绑定事件 (注册事件)
// div.onclick
//3.添加事件 处理程序
div.onclick = function () {
console.log('我被选中了');
}
</script>
3.操作元素之改变元素内容
html部分
<button>显示当前系统时间</button>
<div>某个时间</div>
<p>1123</p>
css部分
<style>
div,
p {
width: 300px;
height: 30px;
line-height: 30px;
color: #fff;
background-color: pink;
}
</style>
js部分
<script>
// 当我们点击了按钮, div里面的文字会发生变化
// 1. 获取元素
var btn = document.querySelector('button');
var div = document.querySelector('div');
// 2.注册事件
btn.onclick = function () {
// div.innerText = '2019-6-6';
div.innerHTML = getDate();
}
function getDate() {
var date = new Date();
// 我们写一个 2019年 5月 1日 星期三
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];
}
// 我们元素可以不用添加事件
var p = document.querySelector('p');
p.innerHTML = getDate();
</script>
4.innerText和innerHTML的区别
html部分
<div></div>
<p>
我是文字
<span>123</span>
</p>
(1)innerText 不识别html标签 非标准 去除空格和换行
var div = document.querySelector('div')
// div.innerText = '<strong>今年是</strong>2020'
(2)innerHTML 识别html标签 W3C标准 保留空格和换行的
div.innerHTML = '<strong>今年是</strong>2020'
(3)这两个属性是可读写的 可以获取元素里面的内容
var p = document.querySelector('p')
console.log(p.innerText);
console.log(p.innerHTML);
5.操作元素之修改元素属性
html部分
<button id="ldh">刘德华</button>
<button id="zxy">张学友</button><br>
<img src="images/ldh.jpg" alt="" title="刘德华">
js部分
//修改元素属性
// 1.获取元素
var ldh = document.getElementById('ldh')
var zxy = document.getElementById('zxy')
var img = document.querySelector('img')
// 2.注册事件 处理程序
zxy.onclick = function () {
img.src = 'images/zxy.jpg'
img.title = '张学友'
}
ldh.onclick = function () {
img.src = 'images/ldh.jpg'
img.title = '刘德华'
}
6.操作元素之表单属性设置
html部分
<button>按钮</button>
<input type="text" value="输入内容">
js部分
// 1.获取元素
var btn = document.querySelector('button')
var input = document.querySelector('input')
// 2.注册事件 处理程序
btn.onclick = function () {
// input.innerHTML = '点击了'; 这个是 普通盒子 比如 div 标签里面的内容
// 表单里面的值 文字内容是通过 value 来修改的
input.value = '被点击了';
// 如果想要某个表单被禁用 不能再点击 disabled 我们想要这个按钮 button禁用
// btn.disabled = true;
this.disabled = true;
// this 指向的是事件函数的调用者 btn
}
7.操作元素之修改样式属性
// 1.获取元素
var div = document.querySelector('div')
//注册事件 处理程序
div.onclick = function () {
// div.style 里面的属性 采取驼峰命名法
this.style.backgroundColor = 'pink'
this.style.width='250px'
}
8.循环精灵图
//1.获取元素 所有的小 li
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 -' + index + 'px';
}
算法很重要
9.显示隐藏文本框内容
css部分
<style>
input {
color: #999;
}
</style>
html部分
<input type="text" value="手机">
js部分
// 1.获取元素
var text = document.querySelector('input');
// 2.注册事件 获得焦点事件 onfocus
text.onfocus = function () {
// console.log('得到了焦点');
if (this.value === '手机') {
this.value = '';
}
// 获得焦点需要把文本框里面的文字颜色变黑
this.style.color = '#333';
}
// 3. 注册事件 失去焦点事件 onblur
text.onblur = function () {
// console.log('失去了焦点');
if (this.value === '') {
this.value = '手机';
}
// 失去焦点需要把文本框里面的文字颜色变浅色
this.style.color = '#999';
}