JavaScript—DomApi

DomApi 有很多
本文列举一些较为常见的 Api

🔎Dom


Dom(Document Object Model)—文档对象模型

通过 Dom(文档对象模型), 可以把 html 上的每个标签映射到 JavaScript 中的一个对应对象

  • 标签上显示的内容可通过 JavaScript 对象获取
  • JavaScript 对象修改对应属性时会影响标签的展示

🔎Dom树


在这里插入图片描述

图片来自网络

  • 文档, 一个页面就是一个文档, 使用 document 表示
  • 元素, 页面中的所有标签称为元素, 使用 element 表示
  • 节点, 页面中的所有内容称为节点(标签, 注释, 文本, 属性…), 使用 node 表示

🔎Dom—querySelector(获取元素)


获取单个元素querySelector(CSS选择器)
获取全部元素querySelectorAll(CSS选择器)

较为常见的CSS选择器

  1. 类选择器
  2. Id 选择器
  3. 后代选择器
  4. 标签选择器

举个栗子🌰

<body>
	<div class="class">abc</div>
	<div id="id">def</div>
	<h3>
		<span>
			<input type="text">
		</span>
	</h3>
	
	<script>
		let elem1 = document.querySelector('.class'); // 类选择器
		let elem2 = document.querySelector('#id'); // Id 选择器
		let elem3 = document.querySelector('h3>span>input'); // 后代选择器
		let elem4 = document.querySelector('input'); // 标签选择器
	</script>	
</body>

注意🍂

当程序中出现多个相同 Id 时(其他同理), 使用querySelector(Id 选择器)会选择第一个出现的 Id

例如

<div id="id">aaa</div>
<div id="id">bbb</div>
<div id="id">ccc</div>

使用querySelector('#id')选择的内容为aaa
想要全部选中可以使用querySelectorAll('#id')

🔎事件


事件
针对用户操作进行的一些响应

事件的三要素


  1. 事件源: 哪个元素产生的事件
  2. 事件类型: 单击, 双击, 移动, 按键盘…
  3. 事件处理程序: 事件发生之后, 要执行哪个代码(要执行的代码是提前设定好的)

🔎操作元素


获取 / 修改元素内容


利用innerHTML获取 / 修改元素内容

innerHTML → 得到标签中的内容(开始标签和结束标签中间夹杂着的那部分)

举个栗子🌰

<p>hello</p>
利用innerHTML获取到的即为 hello

针对如下代码

利用innerHTML获取 / 修改元素内容

<body>

	<div class="box">abc</div>
	
	<script>
		
		let div = document.querySelector('.box');
		div.onclick = function() {
			// 获取元素内容
			console.log(div.innerHTML);
			// 修改元素内容
			div.innerHTML += 'a';
		}
		
	</script>
	
</body>

获取 / 修改元素属性


HTML 标签的属性, 会映射到 JavaScript 对象中

通过console.dir()查看元素的属性

以图片为例

其中包含较多的属性

在这里插入图片描述

获取元素属性 → 获取图片的高度, 宽度, 标题…
修改元素属性 → 点击该图片时切换到预设的另一张图片

完整代码🍂

<body>

	<img src="4.png" title="金鱼姬">
	
	<script>
		
		let img = document.querySelector('img');
		// console.dir(img);
		img.onclick = function() {
			console.log(img.width);
			console.log(img.height);
			console.log(img.title);
			img.src="5.png";
		}
		
	</script>
	
</body>

获取 / 修改表单元素属性


表单元素(input, textarea, select…)有一些普通标签没有的属性

例如

  • value, input 的值
  • checked, 复选框中使用(表示默认被选中的状态)
  • type, 种类(包括 button, checkbox, text, file…)

获取 / 修改表单元素属性🍭

以 value 为例
在输入框输入一个数字后, 点击按钮
打印该数字(获取表单元素属性)
修改当前数字 + 1(修改表单元素属性)

<body>

	<input type="text">
	<button>按钮</button>
	
	<script>
			
		let input = document.querySelector('input');
		button.onclick = function() {
			
			input.value = parseInt(input.value) + 1;
			console.log(input.value);
			
		}
		
	</script>

</body>

在这里插入图片描述

在这里插入图片描述

获取 / 修改样式属性


获取 / 修改样式属性分为 2 种

  1. 修改内联样式(修改 style 属性的值)
  2. 修改元素应用的 CSS 类名

修改内联样式


举个栗子🌰

一段文字的初始大小为 20px, 点击该文字其大小增加 10px

<body>
		
	<div style="font-size: 20px;">这是一个div, 点击之后字体放大</div>
	
	<script>
	
		let div = document.querySelector('div');
		div.onclick = function() {
			let fontSize = div.style.fontSize;
			fontSize = parseInt(fontSize) + 10;
			div.style.fontSize = fontSize + 'px';
		}
		
	</script>
	
</body>

修改元素应用的 CSS 类名


举个栗子🌰

设计两种 CSS 样式, 分别是日间模式与夜间模式

初始化一个 div, 默认模式为日间模式, 点击时在两种模式之间切换

<body>

	<style>
		
		.light {
			/* 日间模式 */
			color: antiquewhite;
			background-color: black;
		}
		
		.dark {
			/* 夜间模式 */
			color: black;
			background-color: antiquewhite;
			
		}
		
	</style>
	
	<div class="light" style="font-size: 20px; height: 300px;">这是一个div</div>
	
	<script>
	
		let div = document.querySelector('div');
		div.onclick = function() {
			div.className = div.className == "light" ? "dark" : "light";
		}

	</script>
	
</body>

在这里插入图片描述
在这里插入图片描述

🔎操作节点


新增节点
创建元素节点 → createElement() / 将新创建的节点挂到 Dom 树 → appendChild()

删除节点
从 Dom 树移除新创建的节点 → removeChild()

新增节点


新增节点分为 2 个步骤

  1. 创建元素节点
  2. 将新创建的节点挂到 Dom 树

举个栗子🌰

创建一个 div
创建元素节点为 input, 在 input 中输入 hello_bibubibu
将新创建的节点挂到 div

<body>
		
	<div class="one">
		这是一个 div
	</div>
	
	<script>
		
		let input = document.createElement('input');
		// 输入框默认显示 hello_bibubibu 
		input.value = 'hello_bibubibu';
		let div = document.querySelector('.one');
		div.appendChild(input);
		
	</script>
	
</body>

在这里插入图片描述

删除节点


针对上述代码添加div.removeChild(input);即可

在这里插入图片描述

🔎总结


  1. 选中元素 → querySelector() / querySelectorAll()
  2. 事件(鼠标单击) → onclick
  3. 修改元素内容 → innerHTML
  4. 修改元素属性 → 利用console.dir()查看元素属性
  5. 修改表单元素属性 → value, checked, type...
  6. 修改样式属性 → 内联样式 / 元素应用的 CSS 类名
  7. 创建元素 → createElement()
  8. 添加节点(将元素挂到 Dom 树) → appendChild()
  9. 删除节点(从 Dom 树移除元素) → removeChild()
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值