JavaEE
【前端】JavaScript —— JS的组成与基本语法
【前端】JavaScript —— JS的基本语法之数组, 函数…
前面学习的 JS 分成三个大的部分
WebAPI 就包含了 DOM + BOM.
WebAPI 概念是非常广泛的, BOM 和 DOM 只是其中的一部分, 还有一些 操作多媒体的 API, 操作画板 canvas, api …
文档对象模型
DOM 合在一起, 就是把 HTML 页面上的每个标签, 都对应成 JS 中的一个对象, 通过这个对象就能获取/ 修改到标签的内容和属性.
DOM API 一共有很多, 本篇文章只介绍其中的一小部分
进行后续操作的前提, 需要先把页面上的某个元素, 先拿到.
let div = document.querySelector('div');
document: 浏览器提供的一个全局对象, 就表示当前的页面. DOM API 基本上都是这个 document 对象的方法.querySelector 参数就是一个 CSS 选择器, 可以使用前面学过的任意一种选择器, 来选中元素
要想看到 div 的对象形态就要使用, dir. dir 方法可以把元素以对象形态打印出来
console.dir(div);

我们看下面这段代码:
hello1
hello2
hello3

如果选择结果不唯一, 此时标签选择器, 得到的结果只是第一个元素
如果像把多个元素都获取到, 可以使用 querySelectorAll 来完成, 只不过这里的返回值, 是一个数组.
let divs = document.querySelectorAll('div');
和用户操作密切相关
事件”预知事件何时到来.hello

这时我们点击页面中的 hello , 控制台上就会出现 ‘按下鼠标’ 字样. 多点几次就会出现多次. (chrome 控制台会默认把相同的日志给合并成一个)

可在设置中更改

还有很多关于其他的事件
div.onmousemove //鼠标移动
div.onmouseenter //鼠标进来了
div.onmouseleave //鼠标出去了
.....
事件涉及三个核心要素:
- 事件源: 事件是哪个元素发出来的
- 事件类型: 点击, 移动, 按下键盘, 调整窗口…
- 事件处理程序: 通过哪个函数/ 代码来进行操作
元素就是 html 标签, 就是在 JS 中先获取到对应的 html 对象之后, 再来操作其中的内容或者属性.
开始标签和结束标签之间的内容.
使用 innerHTML 属性来获取/ 修改标签的元素内容.
hello


还可以通过给这个属性赋值, 来起到修改的作用
hello
# 注意 #
- 这里赋值, 不仅仅能够赋值文本, 还可以赋值一个 html 片段.
- 还可以使用 innerText 来进行操作, 但是他只能得到文本, 不能得到 html 标签, 且是非标准的 (不建议使用)
修改的就是开始标签里面写的那些键值对.

不只是 img 标签, 其他所有标签的属性, 都是通过类似的方式来进行操作的.
表单(主要是指 input 标签)的以下属性都可以通过 DOM 来修改
input 的类型(文本, 密码, 按钮, 文件等)首先, 我们先看这样一段代码
我们通过 innerHTML 拿不到其中的内容, 因为 input 标签是一个单标签, 通过 innerHTML 获取标签内部的子标签, 是没有的.


案例1: 显示密码 (type)


案例2: 点击计数 (value)
- input 标签中存整数
- 一个按钮一点, 数字就减少1
- 一个按钮一点, 数字就增加1

# 注意 #
此处的相加, 并非是算数相加,而是字符串相加了.
input.value 获得的是一个字符串. 所以, 需要先把字符串转成整数
Java 如何转整数? Integer.parselnt
JS 里也有一个
parseInt, 是一个全局函数(不仅仅是针对字符串操作, 也能针对其他类型操作)let oldValue = parseInt(input.value);
这时再点击’ +, - ’ 就是正常的数字加减了.

除此之外, 还有一个更简单的办法, 根据 JS 弱类型的特点, 字符串不能去正号, 就会进行隐式类型转换.
let oldValue = +input.value;

案例3: 操作复选框 (checked)
复选框的选择状态, 可以通过 checked 属性来进行设置
请选择Gujiu的老婆
02木之本樱樱岛麻衣Gujiu全都要

这时我们点击 ‘Gujiu全都要’ 选项 ,就会把前三项全选

行内样式
通过 style 属性, 嵌入到 html 里面的样式
Gujiu🌺

我们现在想: 每次点击, 把文字大小方法 10 个像素
Gujiu🌺

# 注意 #
咱们平时开发的时候, 行内样式其实用的不算多.
行内样式, 如果东西少还好, 如果东西多, 就容易搞乱.
更常用的是通过选择器的方式选中元素,再指定样式

选择器
其中最常用的就是类选择器, 因此就可以通过修改元素 class 属性, 实现修改样式的效果
案例: 夜间模式
这是一大段话, Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti explicabo laudantium quia, maiores quod facilis minima a iste amet ab praesentium tempore quisquam atque impedit fuga delectus architecto iure sapiente!Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti explicabo laudantium quia, maiores quod facilis minima a iste amet ab praesentium tempore quisquam atque impedit fuga delectus architecto iure sapiente!Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti explicabo laudantium quia, maiores quod facilis minima a iste amet ab praesentium tempore quisquam atque impedit fuga delectus architecto iure sapiente!Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti explicabo laudantium quia, maiores quod facilis minima a iste amet ab praesentium tempore quisquam atque impedit fuga delectus architecto iure sapiente!Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti explicabo laudantium quia, maiores quod facilis minima a iste amet ab praesentium tempore quisquam atque impedit fuga delectus architecto iure sapiente!

这时我们每次单机这段文字, 都会切换效果.

分成两个步骤
创建元素节点 (createElement)
把元素节点插入到 dom 树中. (appendChild)
嘿嘿哈哈
使用 removeChild 删除子节点
oldChild = element.removeChild(child);
- 随机生成 1 - 100 间的随机数, 让玩家猜
- 每次玩家猜一个数组, 就提示高了/ 低了/ 猜对了
猜数字
请输入要猜的数字:
已经猜的次数: 0结果是:

上一篇:C语言文件操作