Python全栈 Web(JavaScript DOM节点、事件)

简介:
1.查询节点
1.根据节点的层级查询节点
1.childNodes
元素节点,文本节点,
2.children
元素节点
3.parentNode
获取父节点
4.nextSibling
获取下一个兄弟节点
有可能是文本节点
5.nextElementSibling
获取下一个兄弟元素节点
6.previousSibling
获取上一个兄弟节点
有可能是文本节点
7.previousElementSibling
获取上一个兄弟元素节点
2.通过标签名查询节点 - 返回数组
document|elem.getElementsByTagName("标签名");
document:整个文档内查找
elem:某个元素内查找
3.通过元素的name属性值查询节点
document.getElementsByName("name属性值");
返回值:包含指定name属性值的元素的数组
<input type="radio" checked >
4.通过元素的class值查询节点
document|elem.getElementsByClassName("class");
返回:返回包含指定class属性值的所有元素
2.增加节点
1.创建元素节点
语法:
var elem=document.createElement("元素名");
ex:
var div=document.createElement("div");
div.setAttribute("id","container");
div.innerHTML="动态创建的文本";
2.增加节点到网页上
1.document.body.appendChild(elem);
向body中追加elem的新元素
2.parentNode.appendChild(elem);
向parentNode内部追加elem新元素
3.parentNode.insertBefore(newElem,oldElem)
将newElem元素插入到parentNode中oldElem元素之前


3.删除节点
在DOM中,删除节点的行为只能由父元素发起
parentNode.removeChild(elem);
删除 parentNode 中的 elem 元素

4.事件
1.什么是事件
通常都是由用户的行为来激发的操作
2.触发事件的行为
所有的事件在绑定时,必须加 on 
1.鼠标事件
1.click 事件
当鼠标单击元素时触发该事件
2.mouseover 事件
当鼠标移入进元素时的事件
3.mouseout 事件
当鼠标移出元素时的事件
4.mousemove 事件
当鼠标在元素内移动时的事件
2.键盘事件
1.keydown 事件
当键位按下时所激发的事件
2.keypress 事件
当键位按下时所激发的事件
3.keyup 事件
当键位抬起时所激发的事件
3.状态改变事件
1.load 事件
当元素加载完成时所触发的事件(body)
2.change 事件
当选项发生改变时所触发的事件(select)
3.focus 事件
当元素获取焦点时所触发的事件(文本框类)
4.blur 事件
当元素失去焦点时所触发的事件(文本框类)
5.submit 事件
当表单被提交时所触发的事件(表单)
3.绑定的方式
1.在元素中绑定事件
<元素 on事件名=""></元素>
2.在js中动态的为元素绑定事件
语法:
DOM对象.on事件名=function(){

}
ex:
var main = document.getElementById("main");
main.onclick = function(){

}
注意:在JS动态绑定事件中,允许使用 this 来表示触发当前事件的DOM元素
4.事件行为
1.状态改变事件
1.load 事件
通常为 body 绑定 load 事件,目的是为了在所有内容都加载完成之后再实现一些初始化的操作
  1. <body onload="函数()">
  2.JS中动态绑定
  window.onload = function(){
  网页加载完成后,要执行的操作
  }
2.submit 事件
只有表单被提交时才会被触发
注意:该事件需要一个boolean返回值来通知表单是否要继续被提交.如果返回true,则可以提交表单.否则,阻止表单提交

JS中动态绑定:
表单对象.onsubmit = function(){
return true/false;
}




1.创建一个网页,包含多个单选按钮(name相同)
2.创建一个普通按钮
3.单击普通按钮的时候
验证多个单选按钮中必须有一个被选中



<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<p>
		<input type="radio" name="gender">男
		<input type="radio" name="gender">女
	</p>
	<button onclick="checkRadio()">验证</button>
	<p>
		<input type="checkbox" id="chkAll" onclick="checkAll()">全选
		<input type="checkbox" name="hobby">吃
		<input type="checkbox" name="hobby">喝
		<input type="checkbox" name="hobby">玩
		<input type="checkbox" name="hobby">乐

	</p>
	<script src="common.js"></script>
	<script>
		
		function checkAll(){
			//先获取 chkAll 的选中状态
			var isChk = $("chkAll").checked;
			//获取所有的 hobby 并循环,将所有的hobby的checked更改为isChk
			var all = document.getElementsByName("hobby");
			for(var i=0;i<all.length;i++){
				all[i].checked = isChk;
			}
		}

		function checkRadio(){
			//得到页面中name=gender的所有的元素
			var arr=document.getElementsByName("gender");
			//声明变量用于记录 radio 的选中状态
			var isChecked = false;
			for(var i=0;i<arr.length;i++){
				if(arr[i].checked){
					isChecked = true;
					break;
				}
			}
			if(isChecked){
				alert('通过');
			}else{
				alert('请选中一项');
			}

		}
	</script>
</body>
</html>



点击按钮时
1.先获取三个文本框的值
2.创建两个按钮 - 删除按钮 , 修改按钮
3.先创建四个td
将三个文本框的值追加到前三个td
将两个按钮追加到第四个td中
4.创建一个tr
将四个td追加到tr中
5.将 tr 追加到 table 中


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<p>
		<input type="text" id="gname" placeholder="商品名称">
		<input type="text" id="gprice" placeholder="商品价格">
		<input type="text" id="gcount" placeholder="购买数量">
		<button onclick="btnBuy()">购买</button>
	</p>
	<table border="1" width="600">
		<thead>
			<tr>
				<td>商品名称</td>
				<td>商品价格</td>
				<td>购买数量</td>
				<td>操作</td>
			</tr>
		</thead>
		<tbody id="content"></tbody>
	</table>
	<script src="common.js"></script>
	<script>
		function btnBuy(){
			//1.获取三个文本框的值
			var gname = $("gname").value;
			var gprice = $("gprice").value;
			var gcount = $("gcount").value;
			//2.创建两个按钮
			var btnUpdate = document.createElement("button");
			btnUpdate.innerHTML="修改";
			var btnDelete = document.createElement("button");
			btnDelete.innerHTML="删除";
			//为 btnDelete 绑定 单击事件
			btnDelete.onclick = function(){
				$("content").removeChild(this.parentNode.parentNode);
			}
			//3.创建4个td,分别追加值
			var tdName = document.createElement("td");
			tdName.innerHTML = gname;

			var tdPrice = document.createElement("td");
			tdPrice.innerHTML = gprice;

			var tdCount = document.createElement("td");
			tdCount.innerHTML = gcount;

			var tdOper = document.createElement("td");
			tdOper.appendChild(btnUpdate);
			tdOper.appendChild(btnDelete);

			//4.创建1个tr,追加td
			var tr = document.createElement("tr");
			tr.appendChild(tdName);
			tr.appendChild(tdPrice);
			tr.appendChild(tdCount);
			tr.appendChild(tdOper);
			//5.将tr追加到tbody中
			$("content").appendChild(tr);
		}
	</script>
</body>
</html>





<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="/login/" method="post" id="frm">
		<p>
			用户名称
			<input type="text" id="uname">
			<span id="uname-show">*</span>
		</p>
		<p>
			用户密码
			<input type="password" id="upwd">
			<span id="upwd-show">*</span>
		</p>
		<p>
			确认密码
			<input type="password" id="cpwd">
			<span id="cpwd-show">*</span>
		</p>
		<p>
			<input type="submit" value="提交">
		</p>
	</form>

	<script src="common.js"></script>
	<script>
		function checkUname(){
			var len = $("uname").value.length;
			if(len >= 6 && len <= 18){
				$("uname-show").innerHTML = "通过";
				return true;
			}else{
				$("uname-show").innerHTML = "用户名不符合规范";
				return false;
			}
		}

		function checkUpwd(){
			var len = $("upwd").value.length;
			if(len >= 6){
				$("upwd-show").innerHTML="通过";
				return true;
			}else{
				$("upwd-show").innerHTML="密码不符合规范";
				return false;
			}
		}

		function checkCpwd(){
			if($("upwd").value == $("cpwd").value){
				$("cpwd-show").innerHTML = "通过";
				return true;
			}else{
				$("cpwd-show").innerHTML = "两次密码必须一致";
				return false;
			}
		}

		window.onload = function(){
			$("uname").onblur = checkUname;
			$("upwd").onblur = checkUpwd;
			$("cpwd").onblur = function(){
				checkCpwd();
			}

			$("frm").onsubmit = function(){
				// if(checkUname() && checkUpwd() && checkCpwd()){
				// 	return true;
				// }
				// return false;
				
				return checkUname() && checkUpwd() && checkCpwd();
			}
		}
	</script>
</body>
</html>



相关文章
|
10月前
|
移动开发 JavaScript 前端开发
精通服务器推送事件(SSE)与 Python 和 Go 实现实时数据流 🚀
服务器推送事件(SSE)是HTML5规范的一部分,允许服务器通过HTTP向客户端实时推送更新。相比WebSocket,SSE更轻量、简单,适合单向通信场景,如实时股票更新或聊天消息。它基于HTTP协议,使用`EventSource` API实现客户端监听,支持自动重连和事件追踪。虽然存在单向通信与连接数限制,但其高效性使其成为许多轻量级实时应用的理想选择。文中提供了Python和Go语言的服务器实现示例,以及HTML/JavaScript的客户端代码,帮助开发者快速集成SSE功能,提升用户体验。
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
322 61
|
12月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
380 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
|
7月前
|
IDE 开发工具 Python
魔搭notebook在web IDE下,使用jupyter notebook,python扩展包无法更新升级
魔搭notebook在web IDE下,使用jupyter notebook,python扩展包无法更新升级,不升级无法使用,安装python扩展包的时候一直停留在installing
196 4
|
7月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
327 1
|
8月前
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
517 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
9月前
|
数据采集 人工智能 测试技术
Python有哪些好用且实用的Web框架?
Python 是一门功能强大的编程语言,在多个领域中得到广泛应用,包括爬虫、人工智能、游戏开发、自动化测试和 Web 开发。在 Web 开发中,Python 提供了多种框架以提高效率。以下是几个常用的 Python Web 框架:1) Django:开源框架,支持多种数据库引擎,适合新手;2) Flask:轻量级框架,基于简单核心并通过扩展增加功能;3) Web2py:免费开源框架,支持快速开发;4) Tornado:同时作为 Web 服务器和框架,适合高并发场景;5) CherryPy:简单易用的框架,连接 Web 服务器与 Python 代码。这些框架各有特色,可根据需求选择合适的工具。
488 14
|
9月前
|
JavaScript 前端开发 Java
【Java进阶】详解JavaScript事件
总的来说,JavaScript事件是JavaScript交互设计的核心,理解和掌握JavaScript事件对于编写高效、响应式的网页应用至关重要。
186 15
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
723 86
|
11月前
|
数据采集 Web App开发 存储
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
297 1
打造高效的Web Scraper:Python与Selenium的完美结合

推荐镜像

更多