首页 > 编程语言 >JavaScript的BOM和document编程方法汇总和实例-----前端

JavaScript的BOM和document编程方法汇总和实例-----前端

时间:2023-11-10 13:04:35浏览次数:49  
标签:function JavaScript getElementById ----- BOM onclick var innerText document

//总结浏览器往服务器发请求

                   //表单,超链接

                   //document.location文本重定向

                   //window.location窗口重定向

                   //window.open()请求地址

                   //以上所有方法都可以往服务器传送数据,只有表单提交的数据才是动态的(JSP可以动态)

<!DOCTYPE html>
<!-- 这是HTML的注释 -->
<html lang="en" id="myHtml">
	<head>
		<!-- 这里不是设置了编码,而是告诉浏览器,用什么编码方式打开文件避免乱码 -->
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>HtmlAll</title>
		<style type="text/css">
			span
			{
				color: red;
				font-size: 12px;
			}
		</style>
	</head>
	<body>
		<!-- JS包括三大块
		dom指的是文档对象模型,对网页中的节点进行增删改查的过程
		bom浏览器对象模型(关闭浏览器窗口,打开一个浏览器窗口,后退前进,浏览器地址栏上的地址)
		ecmascript是JS的核心语法ES标准
		bom的顶级对象是window(浏览器窗口),dom的顶级对象是document(HTML文档) -->
		<!-- 实际上bom是包含dom的 -->
		<!-- bom和DOM是包含关系 -->
		<script type="text/javascript">
			window.onload = function()
			{
				var UF = document.getElementById("usernameError");
				//通过浏览器窗体获取了html元素
				document.getElementById("btn").onclick = function()
				{
					alert(btn);
				}
				document.getElementById("get").onclick = function()
				{
					alert(document.getElementById("txt").value);
					document.getElementById("nwx").value = "jack";
				}
				var un = document.getElementById("username");
				un.onblur = function()
				{
					username = un.value;
					username = username.trim();
					if(username)
					{
						//代表非空
						if(username.length < 6 || username.length > 14)
						{
							//用户名长度非法
							UF.innerText = "用户名必须在6到14之间";
						}
						else
						{
							//用户名长度合法
							//判断是否有非法字符
							var regExp = /^[A-Za-z0-9]+$/;
							if(regExp.test(username))
							{
								//合法
							}
							else
							{
								//不合法
								UF.innerText = "用户名只能由数字和字母组成";
							}
						}
					}
					else
					{
						//代表空
						//提示信息
						UF.innerText = "用户名不能为空";
					}
				}
				un.onfocus = function()
				{			
					//这里要先检测再清空,这样就可以判断内容是否为空格组成用于清理
					if(UF.innerText != "")
					{
						//清空空格内容
						un.value = "";
					}
					//清空提示信息
					UF.innerText = "";
				}
				document.getElementById("pwd2").onblur = function()
				{
					var pwd1 = document.getElementById("pwd1").value;
					var pwd2 = document.getElementById("pwd2").value;
					if(pwd1 != pwd2)
					{
						//密码错误的提示标签提示错误
						document.getElementById("pwdError").innerText = "两次输入的密码不一致";
					}
					if(pwd1 === "" || pwd2 === "")
					{
						document.getElementById("pwdError").innerText = "密码不能为空";
					}
				}
				document.getElementById("pwd2").onfocus = function()
				{
					if(document.getElementById("pwdError").innerText != "")
					{
						document.getElementById("pwdError").innerText = "";
					}
				}
				document.getElementById("email").onblur = function()
				{
					var email = document.getElementById("email").value;
					var emailRegExp = /^[A-Za-z0-9]+([-._][A-Za-z0-9]+)*@[A-Za-z0-9]+(-[A-Za-z0-9]+)*(\.[A-Za-z]{2,6}|[A-Za-z]{2,4}\.[A-Za-z]{2,3})$/;
					if(emailRegExp.test(email))
					{
						
					}
					else
					{
						//没过
						document.getElementById("emailnameError").innerText = "必须输入一个邮箱";
					}
				}
				document.getElementById("email").onfocus = function()
				{
					if(document.getElementById("emailnameError").innerText != "")
					{
						document.getElementById("emailnameError").innerText = "";
					}
				}
				document.getElementById("myForm").onsubmit = function()
				{
					
				}
				document.getElementById("update").onclick = function()
				{
					document.getElementById("username").onblur();
					document.getElementById("pwd2").onblur();
					document.getElementById("email").onblur();
					var emailnameError = document.getElementById("emailnameError").innerText;
					var emailnameError = document.getElementById("pwdError").innerText;
					if(UF.innerText === "" && emailnameError === "" && pwdError === "")
					{
						document.getElementById("myForm").submit();
					}
					else
					{
						alert("输入信息有误");
					}
				}
				var aihaos = document.getElementsByName("aihao");
				document.getElementById("firstCheck").onclick = function()
				{
					var flag = document.getElementById("firstCheck");					
					// if(flag.checked)
					// {
					// 	//全选
					// 	//返回的是多个对象
					// 	for(var i = 0;i < aihaos.length;i++)
					// 	{
					// 		aihaos[i].checked = true;
					// 	}
					// }
					// else
					// {
					// 	//取消全选
					// 	//返回的是多个对象
					// 	for(var i = 0;i < aihaos.length;i++)
					// 	{
					// 		aihaos[i].checked = false;
					// 	}
					// }
					//简便写法
					for(var i = 0;i < aihaos.length;i++)
					{
						aihaos[i].checked = flag.checked;
					}
				}
				for(var i = 0;i < aihaos.length;i++)
				{
					aihaos[i].onclick = function()
					{
						var count = 0;
						//总选中量和被选中量相同,全选打勾
						for(var i = 0;i < aihaos.length;i++)
						{
							if(aihaos[i].checked)
							{
								count++;
							}
						}
						//简便写法
						document.getElementById("firstCheck").checked = (count == aihaos.length);
						// if(count == aihaos.length)
						// {
						// 	document.getElementById("firstCheck").checked = true;
						// }
						// else
						// {
						// 	document.getElementById("firstCheck").checked = false;
						// }
					}
				}
				document.getElementById("provinceList").onchange = function()
				{
					alert(document.getElementById("provinceList").value);
				}
				var code;
				document.getElementById("GetTime").onclick = function()
				{
					code = window.setInterval(displayTime,100);
				}
				function displayTime()
				{
					//获取系统当前时间
					var Time = new Date();
					//通过日期Date对象获取年月日
					var year = Time.getFullYear();
					//获取月份,但是是0到11,所以要加1
					var month = Time.getMonth();
					//获取的一周的第几天
					var day = Time.getDate();
					//怎么获取毫秒数
					var times = Time.getTime();
					//转换本地语言的日期格式
					Time = Time.toLocaleString();
					document.getElementById("TimeDiv").innerText = Time;
				}
				document.getElementById("World!").onclick = function()
				{
					window.clearInterval(code);
				}
				document.getElementById("closeDE").onclick = function()
				{
					window.close();
				} 
				document.getElementById("chooseD").onclick = function()
				{
					//取消和确认会返回一个布尔类型
					var i = window.confirm("亲,确认删除吗");
					alert(i);
				}
				document.getElementById("forwords").onclick = function()
				{
					window.history.go(1);
				}
				document.getElementById("goBaidu").onclick = function()
				{
					//可以设置我们的链接为百度 
					var location = window.location;
					location.href = "http://www.baidu.com";
					//总结浏览器往服务器发请求
					//表单,超链接
					//document.location文本重定向
					//window.location窗口重定向
					//window.open()请求地址
					//以上所有方法都可以往服务器传送数据,只有表单提交的数据才是动态的(JSP可以动态)
				}
			}	
		</script>
		<input type="button" id="btn" value="hello"/>
		<input type="text" id="txt"/>
		<input type="button" id="get" value="获取文本的value"/>
		<input type="text" id="nwx"/>
		<input type="text" value="哈哈哈哈哈哈哈哈哈" onblur="alert(this.value)"/>
		<div>
			<table>
				<form id="myForm" action="http://www.baidu.com">
					<tr>
						<th>
							用户名:
						</th>
						<th>
							<input type="text" id="username"/>
							
						</th>
						<th>
							<span id="usernameError"></span>
						</th>
					</tr>
					<tr>
						<th>
							密码:
						</th>
						<th>
							<input id="pwd1" type="text"/>
						</th>
					</tr>
					<tr>
						<th>
							确认密码:
						</th>
						<th>
							<input id="pwd2" type="text"/>
						</th>
						<th>
							<span id="pwdError"></span>
						</th>
					</tr>
					<tr>
						<th>
							邮箱:
						</th>
						<th>
							<input id="email" type="email"/>							
						</th>
						<th>
							<span id="emailnameError"></span>
						</th>
					</tr>
					<tr>
						<th>
							注册或重置
						</th>
						<th>
							<input id="update" type="button" value="注册"/>
							<input type="reset" value="重置"/>
						</th>
					</tr>
				</form>
			</table>
		</div>
		<div>
			<table>
				<form>
					<tr>
						<th>
							<th>
								<input type="checkbox" name="aihao"/>抽烟
							</th>
							<th>
								<input type="checkbox" name="aihao"/>喝酒
							</th>
							<th>
								<input type="checkbox" name="aihao"/>烫头
							</th>
						</th>
					</tr>
					<tr>
						<th>
							<th>
								<input type="checkbox" id="firstCheck"/>全选
							</th>
						</th>
					</tr>
				</form>
			</table>
		</div>
		<div>
			<select id="provinceList">
				<option selected>请选择省份</option>
				<option value="河北省">河北省</option>
				<option value="河南省">河南省</option>
				<option value="山东省">山东省</option>
				<option value="山西省">山西省</option>
				<option value="陕西省">陕西省</option>
			</select>
			<input type="button" value="获取时间" id="GetTime"/>
			<input type="button" value="扎瓦鲁多" id="World!"/>
		</div>
		<div id="TimeDiv"></div>
		<input type="button" value="关闭" id="closeDE"/>
		<input type="button" id="chooseD" value="确认"/>
		<a href="file:///C:/Users/15713/Desktop/Demo/New.html">跳转页面</a>
		<input type="button" value="前进" id="forwords"/>
		<input type="button" value="百度" id="goBaidu">
	</body>
</html>

第二个页面

<!DOCTYPE html>
<!-- 这是HTML的注释 -->
<html lang="en" id="myHtml">
	<head>
		<!-- 这里不是设置了编码,而是告诉浏览器,用什么编码方式打开文件避免乱码 -->
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>HtmlAll</title>
		<style type="text/css">
			#div1{
				background-color: aquamarine;
				width: 300px;
				height: 300px;
				border: 1px solid black;
				position: relative;
				top: 100px;
				left: 100px;
			}
		</style>
	</head>
	<body>
		<script type="text/javascript" src="j.js"></script>
		<div id="div1">
			<input type="text" id="email">
			<span id="emailError" style="color: red; font-size: 12px;"></span>
			<br>
			<input type="button" value="验证邮箱" id="btn"/>
		</div>
		<div>
			<table align="center">
				<form id="myForm">
					<tr><td>登录窗口</td></tr>
					<tr>
						<td>
							<input type="text" id="username"/>
						</td>
					</tr>
					<tr>
						<td>
							<input type="password" id="password"/>
						</td>
					</tr>
					<tr>
						<td>
							<input type="submit" value="登录"/>
						</td>
					</tr>
				</form>
			</table>
		</div>
		<div>
			<!-- void运算符的语法是,执行运算符,但不返回任何结果 -->
			<!-- 让我们href的路径消失,用void不返回即可 -->
			<!-- javascript:void(0)我们的javascript是用来提示浏览器的,这是一段JS代码,这是不能省略的 -->
			<a href="javascript:void(0)" onclick="alert('test')">执行页面不跳转</a>
			<input type="button" onclick="vars()" value="123" />
			<input type="button" id="auto" value="auto" />
			<input type="button" id="tyo" value="tyo" />
			<input type="button" value="设置div的内容" id="btnm"/>
			<!-- 正则表达式,主要用在字符串格式匹配方面 -->
			<!-- 正则表达式是独立的学科,在JAVA语言中支持,C和JS也支持 -->
			<!-- 怎么new对象怎么调用方法 -->
			<!-- .匹配除换行外的任意字符
			\w匹配字母或数字或下滑线或汉字
			\s匹配任意的空白符号
			\d匹配数字
			\b匹配单词的开始或结束
			^匹配字符串的开始
			$匹配字符串的结束
			*重复零次或更多次
			+重复一次或更多次
			?重复零次或者一次
			{n}重复n次
			{n,}重复n次或更多次
			{n,m}重复n到m次 -->
			<!-- \W匹配不是字母或数字或下滑线或汉字的任意
			\S匹配不是空白符号的任意
			\D匹配不是数字的任意
			\B匹配不是单词的开始或结束的任意
			[^x]匹配除了x以外的任意
			[^aeiou]匹配除了aeiou以外的任意字符 -->
			<!-- 正则表达式小括号的优先级较高 -->
		</div>
		<script type="text/javascript">
			// var regExp = /正则表达式/flags;
			// var regExp = new RegExp("正则表达式");
			window.onload = function()
			{
				function Check()
				{
					var input = document.getElementById("email").value;
					var inputEmp = /^[A-Za-z0-9]+([-._][A-Za-z0-9]+)*@[A-Za-z0-9]+(-[A-Za-z0-9]+)*(\.[A-Za-z]{2,6}|[A-Za-z]{2,4}\.[A-Za-z]{2,3})$/;
					var boolean = inputEmp.test(input);
					if(!boolean)
					{
						//不合法
						document.getElementById("emailError").innerText = "邮箱地址不合法";
					}
					else
					{
						//合法
						document.getElementById("emailError").innerText = "邮箱地址合法";
					}
				}
				document.getElementById("btn").onclick = Check;
				document.getElementById("email").onfocus = function()
				{
					document.getElementById("emailError").innerText = "";
				}
				document.getElementById("email").onkeydown = function(event)
				{
					if(event.keyCode === 13)
					{
						Check();
					}
				}
				document.getElementById("Baidu").onclick = function()
				{
					window.open("http://www.baidu.com");
				}
				document.getElementById("Baidu1").onclick = function()
				{
					window.open("http://www.baidu.com","_self");
				}
				document.getElementById("Baidu2").onclick = function()
				{
					window.open("http://www.baidu.com","_blank");
				}
				document.getElementById("Baidu3").onclick = function()
				{
					window.open("http://www.baidu.com","_parent");
				}
				document.getElementById("Baidu4").onclick = function()
				{
					window.open("http://www.baidu.com","_top");
				}
				document.getElementById("openED").onclick = function()
				{
					window.open("file:///C:/Users/15713/Desktop/Demo/001.html");
				}
				String.prototype.trim = function()
				{
					//prototype可以覆盖源代码
					//后期拓展的trim函数直接去掉前后空白
					return this.replace(/^\s+/,"").replace(/\s+$/,"");
				}
				document.getElementById("uxba").onclick = function()
				{
					var username = document.getElementById("asdzxcz").value;
					//去除空格
					username = username.trim();
					alert("["+username+"]");
				}
				document.getElementById("backED").onclick = function()
				{
					window.history.back();
				}
				var arr = [];
				var arr1 = [1,2,3,false,"abc",3.14];
				//数组下表不会越界
				arr1[7] = "op";
				//push会在数组末尾添加一个元素
				arr1.push(10);
				//提取全部元素,并用放入的内容链接为字符串
				// alert(arr1.join("-"));
				//遍历输出,并不会数组下标越界
				// for (var i = 0; i < arr1.length; i++) {
				// 	alert(arr1[i]); 
				// }
				//弹出末尾的元素,并从数组删除这个元素
				// alert(arr1.pop());
				//JS的数组可以自动模拟栈数据结构,后进先出,先进后出
				//push就是压栈,pop就是弹栈
				//reverse()就是反转
				arr1.reverse();
				// alert(arr1.join("-"))
			}
		</script>
		<div>
			<!-- 		QQ号正则表达式^[1-9][0-9]{4,}$
					[1-9]表示一到九的数字出现一次 -->
					<!-- [A-Za-z0-9]表示任意一个字符出现一次 -->
					<!-- [A-Za-z0-9-+]表示以上的任意一个字符 -->
					<!-- 前面的-表示区间,单独出现则表示符号减号 -->
					<input type="text" id="asdzxcz"/>
					<input type="button" value="获取用户名" id="uxba"/>
		</div>
		<input type="button" value="打开百度(新窗口)" id="Baidu"/>
		<input type="button" value="打开百度(当前窗口)" id="Baidu1"/>
		<input type="button" value="打开百度(新窗口)" id="Baidu2"/>
		<input type="button" value="打开百度(父窗口)" id="Baidu3"/>
		<input type="button" value="打开百度(顶级窗口)" id="Baidu4"/>
		<input type="button" value="new" id="openED"/>
		<input type="button" value="后退" id="backED"/>
	</body>
</html>

JS效果

window.onload = function()
{
	document.getElementById("btnm").onclick = function()
	{
		//设置div的内容
		var divElt = document.getElementById("div1");
		//innerHtml和innerText不是代码,是属性,和我们设置text的value原理相同
		//innerHtml会把后面的字符串视为html代码,innerText视为字符串
		divElt.innerHTML = "<font color='red'>哈哈哈哈哈哈哈哈哈</font>";
		divElt.innerText = "<font color='red'>哈哈哈哈哈哈哈哈哈</font>";
	}
	document.getElementById("password").onkeydown = function(event,b)//局部变量
	{
		//获取键值
		//回车键键值是13,ESC是27
		//对于键盘事件来说,他都有keyCode属性用来获取键值
		if(event.keyCode === 13)
		{
			//识别到回车键位提示正在登录
			alert("正在登录")
		}
	}
	
	document.getElementById("myForm").onsubmit = function()
	{
		alert("正在登录")
	}
	
	document.getElementById("auto").onclick = function()
	{
		var ui = [false,true,1,2,"abc",3.14];
		for(var i = 0; i < ui.length; i++)
		{
			alert(ui[i]);
		}
		for(var i in ui)
		{
			//这个var i不是数组的元素,而是数组的下标
			alert(i);//显示都是下标的index
			alert(ui[i]);
		}
	}
	document.getElementById("tyo").onclick = function()
	{
		User = function(username,password)
		{
			this.username = username;
			this.password = password;
		}
		var u = new User("张三","12345");
		alert(u["username"] + "," + u["password"]);
		//这个用在数组上是角标index,用在对象上,是对象的属性名,返回字符串
		for(var value in u)
		{
			//属性名是一个字符串
			alert(value);
			//本身就是一个字符串,直接放进去即可
			alert(u[value]);
		}
		with(u)
		{
			//这种方式仅作了解,不要用尽量,不能所见即所得
			alert(username + "," + password);
		}
	}
}
 
function vars()
{
	alert("1");
}

标签:function,JavaScript,getElementById,-----,BOM,onclick,var,innerText,document
From: https://blog.51cto.com/u_16322355/8296079

相关文章

  • 接口自动化&抓包&代理神器-Mitmproxy代理配置详细教程
    Mitmproxy代理配置及接口加解密详细教程官方网站:EventHooks&API(mitmproxy.org)本节目录展示:文章目录Mitmproxy代理配置及接口加解密详细教程客户端下载安装证书mitmproxy代理ios设备启动服务ios设备配置代理使用web抓取代码过滤处理加解密字符替换字符串转二进制字符串转字节......
  • GPT-4生图未解禁?CMU华人博士新作,大模型GILL能生图能检索,人人可玩
    来源|新智源 ID| AI-eraGPT-4多模态能力恐怕是要再等等了。近日,来自CMU的研究人员全新提出了一种多模态模型GILL。论文地址:https://arxiv.org/pdf/2305.17216.pdf它可以将文本或图像作为prompt,完成多模态对话。具体来说,可以实现生成文本、检索图像、生成新图像。甚至,GILL还能......
  • GPT-4没有意识!但图灵奖得主Bengio等88页论文暗示「天网」迟早降临
    人工智能发展到现在,到底有没有意识?图灵奖得主YoshuaBengio,联合19人团队跨界发表了一篇88页巨作,得出结论:人工智能目前没有意识,但是以后会有。论文地址:https://arxiv.org/pdf/2308.08708.pdf具体来说,目前的人工智能系统都不具备意识,但人类想要构建有意识的人工智能系统,并不存在明显......
  • Math.round(-2019.5)的结果是 -2019
    Math.round()函数返回一个数字四舍五入后最接近的整数如果参数的小数部分大于0.5,四舍五入到相邻的绝对值更大的整数如果参数的小数部分小于0.5,四舍五入到相邻的绝对值更小的整数如果参数的小数部分等于0.5,四舍五入到相邻的在正无穷(+∞)方向上的整数。例:x=Math.round(2019.49);......
  • 【板子申请】Ai-M61-32S开发环境搭建-wuboy19
    【板子申请】Ai-M61-32S开发环境搭建-wuboy19window10vscode环境安装vscode官网下载windows版本图1官网界面图图2安装成功图博主百度网盘下载百度网盘链接提取码:9jydgit安装git官网下载链接图3git安装过程图博主网盘下载git百度网盘链接提取码:n3z......
  • JavaSE(十八)-迭代器Iterator
    文章目录1.引言2.Iterable3.Iterator4.迭代器遍历5.并发修改异常5.List特有的迭代器ListIterator5.1.特有的方法6.增强for循环1.引言为了方便的处理集合中的元素,Java中出现了一个对象,该对象提供了一些方法专门处理集合中的元素.例如删除和获取集合中的元素.该对象就叫做迭代器(......
  • JavaSE(十六)-集合Collection
    文章目录1.集合Collection1.1.集合的概念1.2.集合和数组的区别1.3.集合家族1.4.什么时候用什么样的集合2.Collection接口2.1.Collection接口概述2.2.学习集合对象2.1.Collection接口的共性方法2.1.1.增加2.1.2.删除2.1.3.修改2.1.4.判断2.1.5.获取2.1.6.练习:集合中添加自定义......
  • JavaSE(十二)-Object类
    文章目录1.Object类2.Object类常用方法2.1.equals方法3.==和equals的区别3.1.==3.2.equals()方法的使用4.toString方法5.hashCode()方法1.Object类在JDK中提供一个Object类,它是类层次结构的根类,每个类都直接或间接基础自该类,所有对象(包括数组)都实现了这个类的方法。如果......
  • JavaSE(三十一)-IO流--PrintWriter类
    文章目录1.常用的构造方法2.常用方法3.PrintWriter和BufferedWriter的使用区别java.io.PrintWriter是java中很常见的一个类,该类可用来创建一个文件并向文本文件写入数据。可以理解为java中的文件输出,java中的文件输入则是java.io.File。1.常用的构造方法1)构造方法参数为String......
  • Electron学习2 使用Electron-vue和Vuetify UI库
    Electron学习2使用Electron-vue和VuetifyUI库一、Electron-vue简介二、安装yarn三、创建Electron-vue项目1.关于electron-builder2.安装脚手架3.运行4.打包应用程序四、background.js说明1.引入模块和依赖:2.注册协议:3.创建窗口函数:4.生命周期事件和监听器:五、使用UI库......