DOM事件
- 事件:在什么时候做什么事情
- 执行机制:触发 - 响应机制
- 绑定事件(注册事件)三要素:
- 1.事件源:给谁绑定事件
- 2.事件类型:绑定什么类型的事件,例如: click单击
- 3.事件函数:事件发生后执行什么内容,写在函数内部
事件监听
- JavaScript 解析器会给有绑定事件的元素添加一个监听,解析器会一直监测这个元素,只要触发对应的绑定事件,会立刻执行事件函数。
常见事件监听方法
<input id = "btn" onclick = "alert('点我干嘛?');">
var btn = document.getElementById("btn");
btn.onclick = function (){
alert("点我干嘛?");
};
常见的鼠标事件类型
- onclick 鼠标左键单击触发
- ondbclick 鼠标左键双击触发
- onmousedown 鼠标按键按下触发
- onmouseup 鼠标按键放开时触发
- onmousemove 鼠标在元素上移动触发
- onmouseover 鼠标移动到元素上触发
- onmouseout 鼠标移出元素边界触发
DOM元素属性操作
非表单元素的属性
- 例如:href、title、id、src等
- 调用方式:元素对象打点调用属性名,例如:obj.href
- 部分的属性名跟关键字和保留字冲突,会更换写法。
/* class → className
for → htmlFor
rowspan → rowSpan
*/
- 给元素属性赋值,等号右侧的赋值都是字符串格式。
- 特殊情况:元素的id不要随意修改
案例
<!-- 点击按钮切换图片 -->
<input id = "btn" type="button" value="点击"><br>
<img id = "pic" src="img/a.jpg" />
<script>
//获取元素对象
var btn = document.getElementById("btn");
var pic = document.getElementById("pic");
//绑定事件
var num = 1;
//1表示:当前是a图片 2表示:当前是b图片
/*
这里不能直接判断图片的路径是否相等
是因为:pic.src 的输出结果是:
file:///D:/nmyStudio/vscodeWorkspace/eight/img/a.jpg
*/
// console.log(pic.src);
btn.onclick = function (){
if(num == 1){
pic.src = "img/b.jpg";
num = 2;
}else {
pic.src = "img/a.jpg";
num = 1;
}
}
</script>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#box {
height: 100px;
width: 100px;
background-color: antiquewhite;
}
.hide {
display: none;
}
.show {
display: block;
}
</style>
</head>
<body>
<!-- 点击按钮隐藏div -->
<input type="button" value="点击隐藏" id = "btn">
<div id = "box"></div>
<script>
//获取元素
var btn = document.getElementById("btn");
var box = document.getElementById("box");
//绑定事件
btn.onclick = function (){
if(btn.value === "点击隐藏"){
//css样式的设置,可以通过js代码来调用
box.className = "hide";
btn.value = "点击显示";
}else {
box.className = "show";
btn.value = "点击隐藏";
}
};
</script>
</body>
<body>
<!-- 美女画廊 -->
<h2>美女画廊</h2>
<div id = "imagegallery">
<a href="img/1.jpg" >
<img src="img/1-small.jpg" width="100px">
</a>
<a href="img/2.jpg" >
<img src="img/2-small.jpg" width="100px">
</a>
<a href="img/3.jpg" >
<img src="img/3-small.jpg" width="100px">
</a>
<a href="img/4.jpg" >
<img src="img/4-small.jpg" width="100px">
</a>
</div>
<div style="clear: both;"></div>
<img id = "image" src="img/placeholder.png" width="450px">
<p id = "des">选择一张图片</p>
<script>
//1.获取元素
var a = document.getElementById("imagegallery").getElementsByTagName("a");
var img = document.getElementById("image");
var des = document.getElementById("des");
//2.遍历数组,添加点击事件
for(var i = 0; i < a.length; i++){
a[i].onclick = function(){
//3. 换图片
img.src = this.href;
//4. 换文字
des.innerText = this.title;
//5. 返回false,取消a标签的默认跳转效果
return false;
};
}
</script>
</body>
- 注意:
- for循环内部添加的绑定事件,在触发时,所有的批量添加事件已经成功,触发事件时都是在循环结束之后。
- 批量绑定的事件的事件函数内部,如果有变量i,要注意,函数执行时已经是在循环结束后。
- 循环内部定义的变量是一个全局变量,在循环后执行的i变量的值是i跳出循环时的值。
获取和更改标签内部内容
获取标签内部内容的属性
- 两个属性:innerHTML和innerText
- innerHTML属性,在获取标签内部内容时,,如果包含标签,获取的内容会包含标签,获取的内容包括空白换行等。
- innerText属性,在获取标签内部内容时,如果包含标签,获取的内容会过滤标签,获取的内容会去掉换行和缩进等空白。
更改标签内容
表单元素属性
- value 用于大部分表单元素的内容获取(option除外)
- type 可以获取input标签的类型(输入框或复选框等)
- disabled 禁用属性
- checked 复选框选中属性
- selected 下拉菜单选中属性,双标签元素,value和innerText的区别,反之单标签元素只有value
//双标签
<select id = "list">
<option value = "beijing">北京</option>
<option value = "shanghai">上海</option>
</select>
var opt = document.getElementById("list").getElementByTagName("option");
console.log(opt.innerText); //北京
console.log(opt.value); //beijing
- 注意:
txt.value = "请输入用户名";
案例
- 检测用户名是否是3-6位,密码是否是6-8位,如果不满足要求高亮显示文本框
- 设置下拉框中的选中项
- 搜索文本框
- 全选反选
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
- 找不到素材资源介绍文章里的示例图片?
- 对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
- 模板不会安装或需要功能定制以及二次开发?
- 请QQ联系我们
发表评论
还没有评论,快来抢沙发吧!