Web前端 | JavaScript(BOM编程和JSON)

news2024/12/22 18:03:20

✅作者简介:一位材料转码农的选手,希望一起努力,一起进步!

📃个人主页:@每天都要敲代码的个人主页

🔥系列专栏:Web前端

💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习

目录

一:BOM编程

1. window.open()和window.close()

2. 弹出消息框和确认框

3. 将当前窗口设置为顶级窗口

4. history和location对象

5. 总结有哪些方法可以通过浏览器往服务器发请求

二:JSON对象

1. JSON概述

2. eval函数


一:BOM编程

1. window.open()和window.close()

(1)BOM编程中,window对象是顶级对象,代表浏览器窗口。
(2)window有open和close方法,可以开启窗口和关闭窗口。

(3)利用第一个HTML页面的window.open跳转到002-open第二个HTML页面;在第二个HTML页面调用window.close就可以关闭第二个页面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>BOM编程-open和close</title>
	</head>
	<body>
		
		<input type="button" value="开启百度(新窗口)" onclick="window.open('http://www.baidu.com');" />
		<input type="button" value="开启百度(当前窗口)" onclick="window.open('http://www.baidu.com', '_self');" />
		<input type="button" value="开启百度(新窗口)" onclick="window.open('http://www.baidu.com', '_blank');" />
		<input type="button" value="开启百度(父窗口)" onclick="window.open('http://www.baidu.com', '_parent');" />
		<input type="button" value="开启百度(顶级窗口)" onclick="window.open('http://www.baidu.com', '_top');" />
		
		<input type="button" value="打开表单验证"  onclick="window.open('002-open.html')"/>
	</body>
</html>

002-open

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>close</title>
	</head>
	<body>

		<input type="button" value="关闭当前窗口" onclick="window.close();" />
	</body>
</html>

2. 弹出消息框和确认框

(1)弹出消息框window.alert,弹出确认框window.confirm

(2)删除操作的时候都要提前先得到用户的确认

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>弹出消息框和确认框</title>
	</head>
	<body>
		<script type="text/javascript">
			function del(){
				/*
				var ok = window.confirm("亲,确认删除数据吗?");
				//alert(ok);
				if(ok){
					alert("delete data ....");
				}
				*/
                // 代码合并
			    if(window.confirm("亲,确认删除数据吗?")){
			    	alert("delete data ....");
			    }
			}
		</script>
		<input type="button" value="弹出消息框" onclick="window.alert('消息框!')" />
		
		<!--删除操作的时候都要提前先得到用户的确认。-->
		<input type="button" value="弹出确认框(删除)" onclick="del();" />
	</body>
</html>

3. 将当前窗口设置为顶级窗口

(1)如果当前窗口不是顶级窗口,把当前窗口设置为顶级窗口

(2)在当前窗口中隐藏的内部窗体 <iframe src="http://www.baidu.com"></iframe>

(3)window.top就是当前窗口对应的顶级窗口
         window.self表示当前自己这个窗口

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>当前窗口设置为顶级窗口</title>
	
	</head>
	<body>
		<iframe src="005-child-window.html" width="500px" height="500px" ></iframe>
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>child-window</title>
	</head>
	<body>
		<script type="text/javascript">
			window.onload = function(){
				var btn = document.getElementById("btn");
				btn.onclick = function(){
					// window.top就是当前窗口对应的顶级窗口
					// window.self表示当前自己这个窗口
					if(window.top != window.self){
                        // 将当前窗口设置为顶级窗口
						window.top.location = window.self.location;
					}
				}
			}
		</script>
		<input type="button" value="将当前窗口设置为顶级窗口" id="btn" />
	</body>
</html>

4. history和location对象

(1)通过一个页面跳转到另一个页面,可以调用window.history.back()或者window.history.go(-1)完成后退上一步

(2)调用window.history.go(1)前进到下一步

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>history对象</title>
	</head>
	<body>

		<a href="007.html">007页面</a>

		<input type="button" value="前进" onclick="window.history.go(1)"/> 
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>007</title>
	</head>
	<body>

		007 page!

		<input type="button" value="后退" onclick="window.history.back()" />

		<input type="button" value="后退" onclick="window.history.go(-1)" />
	</body>
</html>

修改地址栏的内容,调用:window.location.href,其中href可以省略;或者调用document.location.href,同样href可以省略

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>设置浏览器地址栏上的URL</title>
	</head>
	<body>
		
		<script type="text/javascript">
			function goBaidu(){
                // 第一种方法:调用window.location.href
				var locationObj = window.location;
				locationObj.href = "http://www.baidu.com";
				// 合并代码
				window.location.href = "http://www.jd.com";
                // href可省略
				window.location = "http://www.126.com";
				
                // 第二种方法:调用document.location.href
				document.location.href = "http://www.sina.com.cn";
                // href可省略
				document.location = "http://www.tmall.com";
			}
		</script>
		
		<input type="button" value="新浪" onclick="goBaidu();"/>
		
		<input type="button" value="baidu" onclick="window.open('http://www.baidu.com');" />
		
	</body>
</html>

5. 总结有哪些方法可以通过浏览器往服务器发请求

(1)表单form的提交。
(2)超链接。<a href="http://localhost:8080/oa/save?username=zhangsan&password=123">用户只能点击这个超链接</a>
(3)document.location
(4)window.location
(5)window.open("url")
(6)直接在浏览器地址栏上输入URL,然后回车。(这个也可以手动输入,提交数据也可以成为动态的)
以上所有的请求方式均可以携带数据给服务器,只有通过表单提交的数据才是动态的。

二:JSON对象

1. JSON概述

(1)什么是JSON,有什么用?
          JavaScript Object Notation(JavaScript对象标记),简称JSON。(数据交换格式)
         JSON主要的作用是:一种标准的数据交换格式。(目前非常流行,90%以上的系统,系统A与系统B交换数据的话,都是采用JSON。)
(2)JSON是一种标准的轻量级的数据交换格式。特点是:体积小,易解析。
(3)在实际的开发中有两种数据交换格式,使用最多,其一是JSON,另一个是XML。
         XML体积较大,解析麻烦,但是有其优点是:语法严谨。(通常银行相关的系统之间进行数据交换的话会使用XML。)
(4)JSON的语法格式:
                    var jsonObj = {
                        "属性名" : 属性值,
                        "属性名" : 属性值,
                        "属性名" : 属性值,
                        "属性名" : 属性值,
                        ....
                    };

(5)总结:JSON是一种行业内的数据交换格式标准;JSON在JS中以JS对象的形式存在

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JSON</title>
	</head>
	<body>
		<script type="text/javascript">
		   // 创建JSON对象(JSON也可以称为无类型对象。轻量级,轻巧。体积小。易解析。)
		    var studentObj = {
				"sno" : "110",
				"sname" : "张三",
				"sex" : "男"
			};
			
			// 访问JSON对象的属性
			alert(studentObj.sno + "," + studentObj.sname + "," + studentObj.sex);
			
			
			// 之前没有使用JSON的时候,定义类,创建对象,访问对象的属性.
			Student = function(sno,sname,sex){
				this.sno = sno;
				this.sname = sname;
				this.sex = sex;
			}
			var stu = new Student("111","李四","男");
			alert(stu.sno + "," + stu.sname + "," + stu.sex);
			
			// JSON数组
			var students = [
				{"sno":"110","sname":"张三","sex":"男"},
				{"sno":"120","sname":"李四","sex":"男"},
				{"sno":"130","sname":"王五","sex":"男"}
			];
			
			// 遍历
			for(var i = 0; i < students.length; i++){
				var stuObj = students[i];
				alert(stuObj.sno + "," + stuObj.sname + "," + stuObj.sex);
			}
		</script>
	</body>
</html>

 复杂一点的JSON

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>复杂一些的JSON对象。</title>
	</head>
	<body>
		<script type="text/javascript">
			var user = {
				"usercode" : 110,
				"username" : "张三",
				"sex" : true,
				"address" : {
					"city" : "北京",
					"street" : "大兴区",
					"zipcode" : "12212121",
				},
				"aihao" : ["smoke","drink","tt"]
			};
			
			// 访问人名以及居住的城市
			alert(user.username + "居住在" + user.address.city);
			
			/*
				请自行设计JSON格式的数据,这个JSON格式的数据可以描述整个班级中每一个学生的信息,以及总人数信息。
			*/
		    var jsonData = {
				"total" : 3,
				"students" : [
					{"name":"zhangsan","birth":"1980-10-20"},
					{"name":"lisi","birth":"1981-10-20"},
					{"name":"wangwu","birth":"1982-10-20"}
				]
			};
			
			
		</script>
	</body>
</html>

2. eval函数

(1)eval函数的作用是:将字符串当做一段JS代码解释并执行

(2)面试题:在JS当中:[]和{}有什么区别?
                [] 是数组。
                {} 是JSON。
                java中的数组:int[] arr = {1,2,3,4,5};
               JS中的数组:var arr = [1,2,3,4,5];
               JSON:var jsonObj = {"email" : "zhangsan@123.com","age":25};

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>eval函数</title>
	</head>
	<body>
		<!--
			JSON是一种行业内的数据交换格式标准。
			JSON在JS中以JS对象的形式存在。
		-->
		<script type="text/javascript">
		   window.eval("var i = 100;");
		   alert("i = " + i); // i = 100
		  
		   // java连接数据库,查询数据之后,将数据在java程序中拼接成JSON格式的“字符串”,将json格式的字符串响应到浏览器
		   // 也就是说java响应到浏览器上的仅仅是一个"JSON格式的字符串",还不是一个json对象.
		   // 可以使用eval函数,将json格式的字符串转换成json对象.
		   //这是java程序给发过来的json格式的"字符串"
		   var fromJava = "{\"name\":\"zhangsan\",\"password\":\"123\"}"; 
		   // 将以上的json格式的字符串转换成json对象
		   window.eval("var jsonObj = " + fromJava);
		   // 访问json对象
		   alert(jsonObj.name + "," + jsonObj.password); // 在前端取数据.
		   
		   var json = {
			   "username" : "zhangsan"
		   };
		   // JS中访问json对象的属性
		   alert(json.username);
		   
		   // JS中访问json对象的属性
		   alert(json["username"]);
		   
		</script>
	</body>
</html>

 3. 设置table的tbody

取出JSON中的数据,把它放到tbody当中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>设置table的tbody</title>
	</head>
	<body>
		<script type="text/javascript">
			// 有这些json数据
			var data = {
				"total" : 4,
				"emps" : [
					{"empno":7369,"ename":"SMITH","sal":800.0},
					{"empno":7361,"ename":"SMITH2","sal":1800.0},
					{"empno":7360,"ename":"SMITH3","sal":2800.0},
					{"empno":7362,"ename":"SMITH4","sal":3800.0}
				]
			};
			
			// 希望把数据展示到table当中.
			window.onload = function(){
				var displayBtnElt = document.getElementById("displayBtn");
				displayBtnElt.onclick = function(){
					var emps = data.emps;
					var html = "";
					for(var i = 0; i < emps.length; i++){
						var emp = emps[i];
						html += "<tr>";
						html += "<td>"+emp.empno+"</td>";
						html += "<td>"+emp.ename+"</td>";
						html += "<td>"+emp.sal+"</td>";
						html += "</tr>";
					}
					document.getElementById("emptbody").innerHTML = html;
					document.getElementById("count").innerHTML = data.total;
				}
			}
		</script>
		<input type="button" value="显示员工信息列表" id="displayBtn" />
		<h2>员工信息列表</h2>
		<hr>
		<table border="1px" width="50%">
			<tr>
				<th>员工编号</th>
				<th>员工名字</th>
				<th>员工薪资</th>
			</tr>
			<tbody id="emptbody">
				<!--
				<tr>
					<td>7369</td>
					<td>SMITH</td>
					<td>800</td>
				</tr>
				<tr>
					<td>7369</td>
					<td>SMITH</td>
					<td>800</td>
				</tr>
				<tr>
					<td>7369</td>
					<td>SMITH</td>
					<td>800</td>
				</tr>
				-->
			</tbody>
		</table>
		总共<span id="count">0</span>条数
	</body>
</html>

结束语

今天的分享就到这里啦!快快通过下方链接注册加入刷题大军吧!

各种大厂面试真题在等你哦!
💬刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matplotlib | 世界足球俱乐部排名可视化

文章目录&#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. 示例数据&#x1f3f3;️‍&#x1f308; 3. 画布设置&#x1f3f3;️‍&#x1f308; 4. 画布区域主题分配&#x1f3f3;️‍&#x1f308; 5. 添加数据散点&#x1f3f3;️‍&#x1f…

Python学习六(进程)

1.简介 多进程在使用中是非常常见的&#xff0c;如果对多进程比较陌生&#xff0c;那可以换个说法&#xff0c;叫多任务。 那什么叫做多任务呢&#xff1f;顾名思义就是多个任务。比如我们使用电脑时&#xff0c;打开浏览器&#xff0c;是一个任务、打开视频&#xff0c;是一个…

MySQL是怎么保证数据不丢的

一.什么是两阶段提交 1.SQL语句&#xff08;update user set name‘李四’ where id3&#xff09;的执行流程是怎样的呢&#xff1f; 1.执行器先找引擎取 ID3这一行。ID 是主键&#xff0c;引擎直接用树搜索找到这一行。 2.如果 ID3 这一行所在的数据页本来就在内存中&#x…

【FLASH存储器系列二】非易失性存储器基本原理之EEPROM和FLASH

1 EEPROM 通过EPROM的原理分析我们知道&#xff0c;由于叠栅雪崩注入MOS晶体管&#xff08;SAMOS&#xff09;的结构特性&#xff08;浮栅周围是二氧化硅的绝缘层&#xff09;&#xff0c;而且由于早期工艺的原因&#xff0c;这个二氧化硅层比较厚&#xff0c;势垒比较高&#…

HTTP协议

哈喽,友友你好呀~今天要给大家分享的是关于HTTP协议的相关知识点,这部分的知识在web开发中还是很重要的一部分知识,耐点心看完,肯定会有收获滴~~ 目录 1.什么是HTTP 2.HTTP协议工作过程 3.什么是抓包工具 4.HTTP协议格式 4.1 HTTP请求(Request) 4.2 HTTP响应(Response) …

基于javaweb的停车库管理系统(java+jsp+jquery+servlet+mysql)

基于javaweb的停车库管理系统(javajspjqueryservletmysql) 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计&#xff0c;大作业&#xff0c;毕业设计&#xff0c;项目练习&#xff0c;学习演示等 功能说明 基…

补环境:vm2 transformer.js 源码分析

在补环境框架的文件夹里执行 vm2 文件能成功得到结果&#xff0c;但是将合并了环境和原 js 文件后的代码内容单独提取出来通过 vm2 调用却报错提示 SyntaxError: Use of internal vm2 state variable&#xff1a; 通过 transformer.js 源码&#xff0c;分析 VM2_INTERNAL_STATE…

【韩顺平老师讲MySQL】函数和多表查询

文章目录P33.数学函数P34.日期函数P37.加密函数P38.流程控制函数P39.查询增强P40.分页查询P41.分组查询P42.多子句查询P43.多表查询笛卡尔积(重难点)P44.多表查询P45.自连接P46.多行子查询P33.数学函数 # 绝对值 SELECT ABS(-12) FROM DUAL;# 十进制转为二进制 SELECT BIN(10) …

【offer拿到手软系列】面试小贴士

​ 学习好一门语言贵在坚持——初识JavaScript&#x1f3f9;&#x1f481;‍♂️&#xff01; 首先&#xff1a; 博主是&#x1f466;一个帅气的boy&#xff0c;你可以叫我山鱼君 &#x1f5b1; ⌨个人主页&#xff1a;山鱼菌的个人主页 &#x1f496;&#x1f496;如果对你有帮…

vmlogin多登防关联浏览器中配置Geolocation定位插件的使用教程

Geolocation 接口是一个用来获取设备地理位置的可编程的对象&#xff0c;它可以让Web内容访问到设备的地理位置&#xff0c;这将允许Web应用基于用户的地理位置提供定制的信息。说实话&#xff1a;其实Geolocation 就是用来获取到当前设备的经纬度&#xff08;位置&#xff09;…

Zookeeper ---- Zookeeper集群操作

Zookeeper ---- Zookeeper集群操作1. 集群操作1. 集群规划2. 选举机制&#xff08;面试重点&#xff09;3. ZK集群启动停止脚本2. 客户端命令操作1. 命令行语法2. znode节点数据信息3. 节点类型&#xff08;持久/短暂/有序号/无序号&#xff09;4. 监听器原理5. 节点删除与查看…

2022年NPDP新版教材知识集锦--【第三章节】(1)

【新产品开发概论】 产品创新是“风险与回报”的过程 随着新产品的累积成本增加&#xff0c;产品的不确定性降低。成功率在很大程度上取决于企业采用的新产品开发实践和流程的质量。 【决策基本框架】 ⚫识别问题或机会 ⚫收集信息(信息来源&#xff1a;内部、外部、内外部…

iOS开发之Undefined symbol:_OBJC_CLASS_$_****

更新了Xcode14.0.1以后&#xff0c;项目突然曝出了此问题Undefined symbol:_OBJC_CLASS_$_****&#xff0c;因此记录一下&#xff0c;解决此问题的步骤&#xff1a; 第一步&#xff1a;首先在Build Phases中找到 Compile Sources&#xff0c;查看是否有对应的***.m文件&#x…

查找算法【二叉查找树】 - 二叉查找树的插入

查找算法【二叉查找树】 - 二叉查找树的插入 因为二叉查找树的中序遍历存在有序性&#xff0c;所以首先要查找待插入关键字的插入位置&#xff0c;当查找不成功时&#xff0c;再将待插入关键字作为新的叶子节点成为最后一个查找节点的左孩子或右孩子。 【算法步骤】 ① 若二…

vim编辑器使用和vim一键配置

1.vim的三种模式 开始之前&#xff0c;先简单说&#xff0c;vim并不是只有这三种模式。总的来说vim大概有12种模式&#xff0c;不同的版本可能也有一些具体的区别。今天我们先介绍三种常用的模式。 先用一张图来大概介绍三种模式之间的转换 命令模式&#xff08;Normal mod…

强化学习算法实践(一)——策略梯度算法

文章目录Reference1. REINFORCE1.1 Basic1.2 Code2. Improvement Tips2.1 Assign Suitable Credit2.2 Add a Baseline2.3 Advantage Function3. Actor-Critic(A2C)3.1 Basic3.2 Code策略梯度是一种基于策略的算法&#xff0c;相比于DQN一类的基于价值的算法&#xff0c;它会直接…

C语言分支与循环--循环篇(图片,动画演示),彻底搞定C语言循环

前言 &#x1f47b;作者&#xff1a;龟龟不断向前 &#x1f47b;简介&#xff1a;宁愿做一只不停跑的慢乌龟&#xff0c;也不想当一只三分钟热度的兔子。 &#x1f47b;专栏&#xff1a;C初阶知识点 &#x1f47b;工具分享&#xff1a; 刷题&#xff1a; 牛客网 leetcode笔记软…

jupyter怎么换环境?

1.为什么要换环境而不用使用默认环境&#xff1f; 在这之前我只知道&#xff0c;要pip安装很多环境包&#xff0c;来在程序中调用使用&#xff0c;但是在不同的项目中&#xff0c;环境总是相互矛盾&#xff0c;总会出现诸多版本问题。所以需要每个项目对应一个环境。conda默认…

2022第二届中国高校大数据竞赛A题(实时更新)

题目 制造业是国民经济的主体&#xff0c;近十年来&#xff0c;嫦娥探月、祝融探火、北斗组网&#xff0c;一大批重大标志性创新成果引领中国制造业不断攀上新高度。作为制造业的核心&#xff0c;机械设备在工业生产的各个环节都扮演着不可或缺的重要角色。但是&#xff0c;在…

【FTP工具】FileZila安装以及使用详解

一、FTP概念 安装FTP主要是为了传输文件&#xff0c;FTP是持久的&#xff0c;只有一次认证过程&#xff0c;传输多个文件都是使用同一个连接。因为FTP就是为远程文件交互而设计的&#xff0c;有些时候只是为了单纯做一个文件传输&#xff0c;往往搭建FTP服务更省时和节约成本。…