Day15-Js5:面向对象3

 

1.Json内置对象

JSON 是用于存储和传输数据的格式。

JSON 通常用于服务端向网页传递数据

  • JSON 英文全称 JavaScript Object Notation
  • JSON 是一种轻量级的数据交换格式。
  • JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。
    文本可以被任何编程语言读取及作为数据格式传递。 本质是一个字符串
和xml的区别

xml是一种重量级的语言(标签占用的体积比较大),主要用于后台存储配置文件数据

<user>
  <username>张三</username>
	<password>123</password>
</user>

json是一种轻量级语言(占用体积较小),主要用于网络数据的传输

{"username":"张三","password":"123"}
JSON 语法规则
  • 数据为 键/值 对。
  • 数据由逗号分隔。
  • 大括号保存对象
  • 方括号保存数组

JSON 对象保存在大括号内。

JSON 数组保存在中括号内。

JSON 字符串转换为 JavaScript 对象

通常我们从服务器中读取 JSON 数据,并在网页中显示数据。

简单起见,我们网页中直接设置 JSON 字符串 (你还可以阅读我们的 JSON 教程):

首先,创建 JavaScript 字符串,字符串为 JSON 格式的数据:

vartext = '{ "sites" : [' + '{ "name":"Runoob" , "url":"www.runoob.com" },' + '{ "name":"Google" , "url":"www.google.com" },' + '{ "name":"Taobao" , "url":"www.taobao.com" } ]}';

然后,使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:

var obj = JSON.parse(text);

最后,在你的页面中使用新的 JavaScript 对象:

实例

vartext = '{ "sites" : [' + '{ "name":"Runoob" , "url":"www.runoob.com" },' + '{ "name":"Google" , "url":"www.google.com" },' + '{ "name":"Taobao" , "url":"www.taobao.com" } ]}'; obj = JSON.parse(text); document.getElementById("demo").innerHTML = obj.sites[1].name + "" + obj.sites[1].url;

语法上的区别

JSON字符串,属性名必须要加双引号引起来

js对象:属性名可以不加双引号

作用上的区别

JSON字符串:本质是字符串,一般用于网络传输(从后台接收的数据大部分都是JSON格式)

js对象:本质是对象(类的实例),不能在网络传输(后台经常将对象转成JS字符串再网络传输给前台)

转换

目的:网络传输一般使用的是JSON格式,本质是一个字符串,如果想获取里面的内容,很麻烦,

可以通过JSON字符串转换为js对象,用对象的属性来获取里面的内容就非常方便

方法:

JSON.parse() 用于将一个 JSON 字符串转换为 JavaScript 对象。

JSON.stringify() 用于将 JavaScript 值转换为 JSON 字符串。

var str = '{"success":true,"data":{"title":"天蝎座","type":"今日运势","time":"7月28日","todo":{"yi":"多角度思考","ji":"不知变通"},"fortune":{"all":3,"love":4,"work":3,"money":3,"health":4},"index":{"all":"75%","love":"86%","work":"69%","money":"72%","health":"82%"},"shortcomment":"享受放松的时光","fortunetext":{"all":"处于一个平平淡淡的运势状态,没有太多波澜起伏,但也没有太多烦恼。或许这正是你需要的,可以适度地放松一下心情,享受一段短暂宁静的时光。生活方面,建议你找些喜欢的事情做做,或是培养自己的兴趣爱好,让自己更加充实起来。","love":"单身的有可能会遇到一个令你心动的人,不妨主动一些,展开一段美好的恋情。已有伴者会有更多互动的时间,能够享受甜蜜的二人世界。","work":"目前的进展可能不太顺利,但并不代表你要放弃,持续学习和进步,成功总会属于你的,暂时是积累经验储备知识能量的一天,建议提高行动积极性。","money":"不要过于放松警惕,合理安排和管理自己的财务,避免过度消费和冲动购物。注意理财规划,积少成多,财富会悄悄积累起来。","health":"保持良好的生活习惯,适量运动和饮食均衡,可以增强体质和提高免疫力。同时,也要注意放松心情,避免过度压力带来的身心负担。"},"luckynumber":"9","luckycolor":"深蓝","luckyconstellation":"摩羯座"}}'

// 转换
var object= JSON.parse(str)
console.log(object)

// 打印爱情运势
console.log(object.data.fortunetext.love)

韩小韩API接口站 - 免费API数据接口调用服务平台 一个API接口站(可以将内容转换位JSON字符串)

json在线解析工具

2.DOM概念

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

HTML DOM 模型被构造为对象的树(本质就是将里面所有的标签都封装成一个个对象)

DOM树:根据Html结构,生成的一个树形结构,可以理解为由对象组成的树

DOM作用:通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

DOM操作页面元素的思想:

就是将HTML页面中所有组成部分(标签,属性,标签体,注释)都抽成对象,用面向对象的方式来操作。

因为对象中有属性和方法,比单纯操作字符串方便得多。

Document 对象

当浏览器载入 HTML 文档, 它就会成为 Document 对象

Document 对象是 HTML 文档的根节点

Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问

提示:Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问。

console.log(document) // 打印的是具体内容

console.dir(document) // 打印的是document对象的详细信息(属性和方法)

Document 对象是js的一个内置对象,不需要创建,直接拿就能用

HTML DOM 节点

在 HTML DOM (Document Object Model) 中 , 每一个元素都是 节点:

  • 文档是一个文档节点
  • 所有的HTML元素都是元素节点
  • 所有 HTML 属性都是属性节点
  • 文本插入到 HTML 元素是文本节点。are text nodes
  • 注释是注释节点

3.DOM获取元素

获取单个元素:

document.getElementById() 返回拥有指定id的第一个对象的引用

获取多个元素:

document.getElementByClassName() 返回文档中所有指定类名的元素集合,作为NodeList对象

document.getElementByTagName() 返回带有指定标签名的对象合集

H5方式获取:

document.querySelector() 返回文档中匹配指定的css选择器的第一元素

document.querySelectorAll() 返回文档中匹配的css选择器的所有元素节点列表

和传统的getElement方式的区别(以获取第一个li为例

// 传统方式获取第一个,需要加上索引
console.log(document.querySelector('li').innerHTML) 
// H5方式,如果有多个,document.querySelector自动获取第一个

// H5方式另一个好处,可以灵活使用选择器选择元素,包括扩展选择器。
console.log(document.querySelector('ul li'))  // 只获取ul下的li

4.事件入门

三要素:

  1. 事件源(按钮)
  2. 事件(动作:点击这个动作)
  3. 事件处理程序(事件发生之后,需要做的事情,比如弹框)

三步骤:

  1. 写一个事件源
  2. 写一个监听器(事件处理函数)
  3. 绑定监听器和事件源(通过一个属性,将二者绑定在一起)

5.DOM操作属性

原始方式

element.setAttribute() 设置或者改变指定属性并指定值

element.getAttribute() 返回指定元素的属性值

简化方法

元素对象.属性名 = 属性值 设置或者修改元素属性的值

元素对象.属性名 获取元素的属性值

应用场景

操作图片的src(灯泡切换,轮播图)

操作input标签的value属性(书架案例)

操作input标签的checked属性(复选框选中案例)

6.DOM操作标签体

innerHTML

设置

元素对象.innerHTML = 新值

获取

元素对象.innerHTML

innerText(操作的是纯文本)

设置

元素对象.innerText = 新值

获取

元素对象.innerText

7.DOM操作样式

单独设置样式

元素对象.style.样式属性名 = 属性值

批量设置样式

方式一:不推荐,有可能会覆盖原有样式

元素对象.className = class属性值

方式二:使用classList属性

元素对象.classList.add(class属性值)

方法

add(class1, class2, ...) 在元素中添加一个或多个类名。

remove(class1, class2, ...) 移除元素中一个或多个类名

toggle(class, true|false) 在元素中切换类名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Java中的SimpleDateFormat类将String类型的时间转换为Date对象,然后再对Date对象进行处理。 首先,我们先将时间段转换为【2020-11-20 00:00:00,2021-10-09 23:59:59】,即将结束时间改为当天的最后一秒: ```java String startTime = "2020-11-20 09:09:09"; String endTime = "2021-10-09 10:10:10"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startDate = sdf.parse(startTime); Date endDate = sdf.parse(endTime); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(endDate); endCalendar.set(Calendar.HOUR_OF_DAY, 23); endCalendar.set(Calendar.MINUTE, 59); endCalendar.set(Calendar.SECOND, 59); endDate = endCalendar.getTime(); String newEndTime = sdf.format(endDate); System.out.println(newEndTime); ``` 输出结果为:2021-10-09 23:59:59 接下来,我们可以使用一个循环,每次增加一天,输出该天的开始时间和结束时间: ```java Calendar calendar = Calendar.getInstance(); calendar.setTime(startDate); while (calendar.getTime().before(endDate)) { Date startOfDay = calendar.getTime(); calendar.add(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date endOfDay = calendar.getTime(); System.out.println(sdf.format(startOfDay) + " - " + sdf.format(endOfDay)); } // 输出最后一天的开始时间和结束时间 Date startOfDay = calendar.getTime(); System.out.println(sdf.format(startOfDay) + " - " + newEndTime); ``` 输出结果为: ``` 2020-11-20 09:09:09 - 2020-11-21 00:00:00 2020-11-21 00:00:00 - 2020-11-22 00:00:00 2020-11-22 00:00:00 - 2020-11-23 00:00:00 ... 2021-10-07 00:00:00 - 2021-10-08 00:00:00 2021-10-08 00:00:00 - 2021-10-09 00:00:00 2021-10-09 00:00:00 - 2021-10-09 23:59:59 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值