【JavaScript-10】webAPI---DOM事件的内容+案例

一.事件组成

事件源 事件类型 事件处理程序 我们也称之为三要素

(1)事件源 事件被触发的对象 谁 按钮

(2)事件类型 如何触发 什么事件

比如鼠标点击(onclick) 还是鼠标经过,还是键盘按下

(3)事件处理程序 通过一个函数赋值的方式 完成

例子:鼠标点击更换背景图,轮空循环

要学会思路

<style>
		
		.banner{
			width: 900px;
			height: 500px;
			margin:0 auto;
			background-image: url(images/1.jpg);
			background-size: cover;
			background-position: center;
			position: relative;
		}
		.icon{
			position: absolute;
			right: 10px;
			bottom: 30px;
			width: 120px;
			height: 30px;
		}
		span{
			float: left;
   	 		width: 30px;
    		height: 30px;
   			border-radius: 15px;
   		 	margin-right: 10px;
    		background-color: rgba(0,0,0,0.5);
    		text-align: center;
    		color: #fff;
    		line-height: 30px;
   	 		cursor: pointer;
		}
		.active{
			background-color: orange;
			box-shadow: 0px 0px 10px 3px #d4d0d0;
		}
	</style>
</head>
<body>

<!-- 老师版 -->
	<div class="banner">
		<div class="icon">
		<!-- 方法二自定义属性 -->
			<span class="active" data-url= "images/2.jpg" >1</span>
			<span data-url= "images/3.jpg">2</span>
			<span data-url= "images/4.jpg">3</span>
		</div>
	</div>
	<script>
		var banner = document.querySelector(".banner");
		var spans = document.querySelectorAll("span");

		//使用for循环循环添加图片
		for(var i = 0;i<spans.length;i++){
			//for循环给span赋值了,i只在循环中有用,所以此刻使用this,利用for循环遍历所有span
			spans[i].onclick = function(){
				var urls = this.getAttribute("data-url");
				var colors = this.getAttribute("data-color");
				// console.log("url",urls);
				banner.style.backgroundImage = "url("+urls+")";
				// spans.style.backgroundColor = "rgba("+colors+")";此处不可用
				

				//先清空背景图样式,再添加,每次点击的时候才会出现这个for循环
				for(var x = 0;x<spans.length;x++){
					spans[x].className = "";
					//出现三次清空再添加样式,全部清空之后再次添加样式
				}
				//再添加
				this.className = "active";
				
				//urls要作为变量使用,所以此刻要使用引引加加,连接字符串和变量
			}
		}
		/*spans[0].onclick = function(){
			banner.style.backgroundImage = "url(images/2.jpg)";
		} 
		spans[1].onclick = function(){
			banner.style.backgroundImage = "url(images/3.jpg)";
		} 
		spans[2].onclick = function(){
			banner.style.backgroundImage = "url(images/4.jpg)";
		} */
	</script>
	
</body>
例子:输入名字添加到列表中,并可以删除
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>DOM回顾</title>
	<style>
		.center{
			width: 458px;
			margin: 0 auto;
			background-color: #ccc;
		}
		.input_top1{
			width: 100%;
		}
		.bg_color{
			background-color: orange;
		}
		table{
			width: 458px;
		}

		/*.content{
			height: 20px;
		}*/
		table thead tr th{
			width: 30%;
			text-align: center;
		}
		/*删除按钮*/
		.de_btn{
			cursor: pointer;
		}
	</style>
</head>
<body>

<!-- 勿删有bug -->
	<div class="center">
		<div class="input_top1">
		歌手<input class="inp1" type="text" placeholder="请输入歌手名">
		歌曲<input class="inp2" type="text" placeholder="请输入歌曲名">
		<button class="btn">添加</button>

		</div>
		
		<div class="content">
			<!-- 表头 -->
			<table cellspacing="0px" cellpadding="5px">
				<thead>
					<tr>
						<th>歌手</th>
						<th>歌曲</th>
						<th class="bg_color">操作</th>
					</tr>
				</thead>
			<!-- 表格内容 -->
				<tbody class="tb_box">
					<!-- <tr>
						<td>筷子兄弟</td>
						<td>小苹果</td>
						<td class="de_btn bg_color">删除</td>
					</tr>
					<tr>
						<td>陈奕迅</td>
						<td>十年</td>
						<td class="de_btn bg_color">删除</td>
					</tr> -->
					
				</tbody>
			</table>
		</div>
		
	</div>

	<script>
		var inp1  =document.querySelector(".inp1");
		var inp2 = document.querySelector(".inp2");
		var table = document.querySelector("table");
		
		
		var btn = document.querySelector(".btn");


		btn.onclick = function(){
			console.log("能都输入");
			// 拿到输入框中的值
			var val1 = inp1.value;
			var val2 = inp2.value;
			//获取输入框里的值
			//创建节点
			//限制为空不添加
			if(val1 == "" || val2 == ""){
				alert("请您输入正确歌手或歌曲名");
			}else{
				var tb = document.querySelector("tbody");
				var newtr = document.createElement("tr");
				var tdAdd1 = document.createElement("td");
				var tdAdd2 = document.createElement("td");
				var tdAdd3 = document.createElement("td");
				tdAdd1.innerHTML = val1;
				tdAdd2.innerHTML = val2;
				tdAdd3.innerHTML = "删除";


				//添加孩子节点
				newtr.appendChild(tdAdd1);
				newtr.appendChild(tdAdd2);
				newtr.appendChild(tdAdd3);
				tdAdd3.className = "bg_color";
				//将tr添加到tbody里面
				tb.appendChild(newtr);
				




				//删除操作
				tdAdd3.onclick = function(){
					console.log("删除是否能出来");
					this.parentNode.parentNode.removeChild(this.parentNode);		
				}

				//点击添加的时候清空输入框的值
				inp1.value = "";
				inp2.value = "";
			}
		}
		
		

	</script>

	
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值