javascript入门第二天


typora-copy-images-to: img


今日内容

  1. 事件
  2. 综合案例:动态添加表格
  3. 常见的内置对象
  4. BOM对象
  5. javascript面向对象
  6. 综合案例:随机抽奖(抽人名),开光灯案例,轮播图案例

一.事件机制

1.常见的名词解释
  • 事件

    在网页里面的事件,指的触发网页的动作,比如:点击鼠标,双击鼠标,按键盘,那么这些动作称之为事件。

    比如:脚踹电动车

  • 事件源

    在网页里面的事件源,指的网页的元素,比如:标签,属性,文本等等,这些称之为事件源

    比如:电动车

  • 监听

    在网页里面的监听,指的通过触发网页的元素,调用事件对应的js代码,实现网页的动态效果

    比如:电动车上的报警器。

    ​ 监听过程: 脚踹电动车,引起报警器报警

2.事件机制概述

事件机制介绍:

​ 回顾javascript基本概念: javascript是基于对象和事件驱动的一门客户端脚本语言。

​ 在这里面事件机制:通过javascript的事件,触发网页的元素,调用事件对应的js代码(定义好的函数),实现网页的动态效果

<!--
 		1.事件源:input的普通按钮
 		2.事件:点击事件onclick
 		3.监听:事件绑定js代码,触发网页的元素,调用事件绑定的js代码,实现动态效果
-->
 	<input type="button" value="点击我,弹出框" onclick="fu1();"  />
 	<script type="text/javascript">
 		//1.提供事件对应的js代码
 		function fu1 () {
   
 			alert("点我啊,啊,啊");
 		}
 	</script>
3.在html网页绑定事件的两种方式
  • 方式一:直接绑定(直接在标签里面定义事件属性,绑定对应的js代码)

  • 方式二:间接绑定(不在标签里面定义事件属性,在使用时在绑定)

  • 代码如下:

            <input type="button" value="直接绑定" onclick="f1();" />
    		<input type="button" value="间接绑定" id="bt2" />
    		<script type="text/javascript">
    			//1.直接绑定:
    			function f1() {
         
    				alert("直接绑定---");
    			}
    			//2.间接绑定:
    			//2.1 获取标签对象
    			var input2_tag = document.getElementById("bt2");
    			//2.2 标签对象操作事件属性
    			input2_tag.onclick = function(){
         
    				alert("间接绑定---");
    			}
           </script>
    
  • 细节

    在事件绑定中,this表示谁?: 点击谁,谁就是this

            <a href="#" id="a1">点击我,不跳转</a>
    		<hr color="red" size="3" />
    	    <input type="button" value="直接绑定111" οnclick="f1(this);" id="bt1" />
    	
    		<script type="text/javascript">
    			//需求:点击按钮,获取a标签的文本内容
    			function f1(obj) {//定义obj=this; this表示按钮
    				//1.获取a标签对象
    				var a_tag = document.getElementById("a1");
    				//2.调用innerText
    				alert(a_tag.innerText);
    			}
    			//需求:直接点击a标签。获取文本内容
    			document.getElementById("a1").οnclick=function(){
    				alert("标签的名称:"+ this.nodeName);
    				alert("标签的文本:"+ this.innerHTML);
    			}
    
4.常见的事件有那些
  • 点击事件

    onclick: 单击事件

    ondbclick: 双击事件

  • 鼠标状态事件

    onmousedown: 鼠标按下事件

    onmouseup:鼠标松开事件

    onmousemove:鼠标移动事件(每次移动每次触发执行)

    onmouseover: 鼠标悬浮事件(触发执行一次)

  • 焦点事件

    onfocus:获取焦点

    onblur: 失去焦点

  • 键盘事件

    onkeydown:键盘按下事件

    onkeyup:键盘松开事件

  • 表单事件

    onsubmit: 表单提交事件(只有提交按钮,才会触发事件)

  • 内容改变事件

    onchange: 在内容改变时,触发该事件

  • 页面加载事件

    onload: 等html网页完全加载完毕后,才执行事件里面的js代码

5.案例:演示常见的事件
  • onload: 等html网页完全加载完毕后,才执行onload事件里面的js代码

    <head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script type="text/javascript">
    			window.onload=function(){
         
    				//需求:获取id=d1的文本值
    				alert(document.getElementById("d1").innerHTML);
    			}
    		</script>
    	</head>
    	<body>
    		<div id="d1">我是谁,我来自哪里!</div>
    	</body>
    
  • onfocus:获取焦点 和 onblur: 失去焦点, 通常应用与对表单的校验

    获取焦点: 通常用于输入框,点击输入框,获取焦点了。

    失去焦点:通常用于输入框,离开输入框,失去焦点了。

    <form action="../index.html" method="get">
    			用户名:<input type="text" name="username"  id="uname"/><br/>
    			<button type="submit">提交按钮</button>
    			<button type="button">普通按钮</button>
    		</form>
    		<script type="text/javascript">
    			//1.需求:点击用户名输入框时,提示请输入用户名
    			  document.getElementById("uname").onfocus=function(){
         
    			  	console.log("获取焦点:"+ this.name);
    			  }
    			
    			//2.需求:在离开用户名输入框时,提示用户名输入符合规范吗
    			 document.getElementById("uname").onblur=function(){
         
    			  	console.log("失去焦点:"+ this.name);
    			  }
    			
    		</script>
    
  • onchange: 在内容改变时,触发该事件

    <script type="text/javascript">
    		 	//1.页面加载事件
    		 	window.onload=function(){
         
    		 		//2.内容改变事件
    		 		document.getElementById("province").onchange=function(){
         
    		 			//3.获取改变的内容: this 表示option标签对象
    		 			var province_name = this.value;
    		 			console.log(province_name);
    		 		}
    		 		//3.作业: 点击省份,在右侧显示该省份对应的市区
    		 	}
    		 </script>
    	</head>
    	<body>
    		<select id="province">
    				<option>--请选择--</optgroup>
    				<option value="henan">河南</optgroup>
    				<option value="jianghsu">江苏</optgroup>
    				<option value="gaugndong">广东</optgroup>
    		</select>
    		<select id="city">
    				<option>--请选择--</optgroup>
    				
    		</select>
    	</body>
    
  • onsubmit: 表单提交事件(只有提交按钮,才会触发事件)

    • 直接绑定的方式:必须在form标签里面加关键词return

      <form action="server.html" method="get" id="formBtn" onsubmit="return checkForm11()">
          ---
      </form>
      		   //1.直接绑定: 
      			function checkForm11(){
      				console.log("测试前:::"+flag)
      				//2.需求:用户名必须输入3-6个字符,才能提交表单,否则不提交
      				var flag=true;
      				if(flag==false){
      					console.log("用户输入的数据不满足规范----不提交表单");
      				}else{
      					console.log("用户输入的数据满足规范------提交表单");
      				}
      				//3.通过 boolean: 确定表单是否提交
      				console.log("测试后:::"+flag)
      				return flag;	
      			}
      注意:
      1. return  true: 提交表单
      2. return  false: 不提交表单
      
    • 间接绑定的方式

      <form action="server.html" method="get" id="formBtn">
          ---
      </form>
      		  document.getElementById("formBtn").οnsubmit=function(){
      	
      				//2.需求:用户名必须输入3-6个字符,才能提交表单,否则不提交
      				var flag=false;
      				if(flag==false){
      					console.log("用户输入的数据不满足规范----不提交表单");
      				}else{
      					console.log("用户输入的数据满足规范------提交表单");
      				}
      	
      				return flag;	
      			}
      注意:
      1. return  true: 提交表单
      2. return  false: 不提交表单
      
6.作业:
  1. 省市区三级联动:

    需求:点击省份数据,显示市区数据,点击市区数据,显示市区对应的县城和区。

  2. 开关灯案例:

    需求:点击关灯照片,显示开灯的照片,点击开灯的照片,显示关灯的照片

    核心思路:

    1步: 判断什么时候开灯,什么时候关灯

    2步:在开灯时,修改src属性值为:on.gif 在关灯时,修改src属性值为:off.gif

二. 综合案例:动态添加表格

需求:输入姓名,年龄,以及姓名,点击添加按钮,动态在table表格加一行数据
在这里插入图片描述

分析:

  1. 获取用户输入的:姓名,年龄,以及性别

  2. 点击添加按钮:

    思路一:

    ​ 动态创建 tr,td标签,通过innerText设置获取用户输入的内容.

    ​ 通过父标签tr的appendChild(td)

    ​ 通过父标签table的appendChild(tr).

    缺点:需要频繁的创建标签createElement(“标签名称”),不停通过父标签追加子标签appendChild(tr)。

    思路二:

    ​ 1.获取姓名,年龄,性别。

    ​ 2.把上述获取的内容拼接到 td字符串里面,再拼接到tr字符串里面

    ​ 3.通过table标签的innerHTML属性=拼接好的字符串

    优点:不需要频繁建标签createElement(“标签名称”),不停通过父标签追加子标签appendChild(tr)。

  3. 点击删除按钮,删除一行数据

    通过父标签删除子标签: 父标签.removeChild(子标签)。

    通过table删除tr: table.removeChild(tr)。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>动态表格</title>
    
        <style>
            table{
           
                border: 1px solid;
                margin: auto;
                width: 500px;
            }
    
            td,th{
           
                text-align: center;
                border: 1px solid;
            }
            div{
           
                text-align: center;
                margin: 50px;
            }
        </style>
    
    </head>
    <body>
    
    <div>
        <input type="text" id="name" placeholder="请输入姓名" autocomplete="off">
        <input type="text" id="age"  placeholder="请输入年龄" autocomplete="off">
        <input type="text" id="gender"  placeholder="请输入性别" autocomplete="off">
        <input type="button" value="添加" id="add" onclick="addRow();">
    </div>
    
        <table id="tb">
            <caption>学生信息表</caption>
            <tr>
                <th>姓名
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 36
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值