JavaScript之DOM模型

DOM模型

通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。

DOM:Document Object Model,文档对象模型。

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

HTML DOM 模型被构造为对象的树:
在这里插入图片描述
通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

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

document对象

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

Document 对象是 HTML 文档的根节点。

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

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

document对象常用方法

查找HTML元素常用方法

方法描述
document.getElementById()返回对拥有指定id的第一个对象的引用
document.getElementsByClassName()返回文档中所有指定类名的元素集合,作为NodeList对象
document.getElementsByTagName()返回带有指定标签名的对象集合
document.getElementsByName()返回带有指定名称的对象集合

示例:

	<script>
		function myLoad() {
			//页面加载完毕之后再去获取页面上的元素,否则获取不到
			//根据ID 获取元素,只能获取到唯一元素(如果有重名的ID元素,获取到的是第一个元素)
			var div = document.getElementById("myDiv");
			console.log(div);
			//根据指定的类样式的名称获取元素,返回集合
			var list = document.getElementsByClassName("demo");
			console.log("根据类样式的名称获取到的元素的集合长度是:" + list.length);
			for(var i = 0; i < list.length; i++) {
				console.log(list[i]);
			}
			//根据指定HTML标签名称获取元素,返回集合
			var list2 = document.getElementsByTagName("li");
			console.log("根据标签的名称获取到的元素的集合长度是:" + list2.length);
			for(var i = 0; i < list2.length; i++) {
				console.log(list2[i]);
			}
			//根据指定HTML元素的name属性获取元素,返回集合
			var list3 = document.getElementsByName("myli");
			console.log("根据标签的名称属性获取到的元素的集合长度是:" + list3.length);
			for(var i = 0; i < list3.length; i++) {
				console.log(list3[i]);
			}
		}
	</script>

	<body onload="myLoad()">
		<p class="demo"></p>
		<div id="myDiv" class="demo">
			div
		</div>
		<ul class="demo">
			<li>li11111111111</li>
			<li name="myli">li11111111111</li>
			<li>li11111111111</li>
			<li name="myli">li11111111111</li>
		</ul>
	</body>

输出结果如下:
在这里插入图片描述

修改HTML内容和属性

  • 修改内容
    修改 HTML 内容的最简单的方法是使用 innerHTML 属性。
    修改 HTML 元素的内容的语法:
    document.getElementById(id).innerHTML=新的 HTML。

PS: 绝对不要在文档(DOM)加载完成之后使用 document.write()。这会覆盖该文档。

  • 修改 HTML 属性
    修改 HTML 元素属性的语法:
    方式1:document.getElementById(id).attribute=新属性值
    方式2:document.getElementById(id).setAttribute(属性名,属性值);
<body>
		<h1 style="color: green;" id="myh1" class="bf">hello world</h1>
		<script>
			var h1 = document.getElementById("myh1");
			console.log(h1.getAttribute("class"));
			h1.setAttribute("class", "bg"); //设置属性
			console.log(h1.getAttribute("class"));
			console.log(h1.getAttribute("style"));
		</script>
</body>

在这里插入图片描述

修改HTML元素的CSS

修改 HTML 元素css的语法:

document.getElementById(id).style.property=新样式

document.getElementById("myli").style.color="blue";
document.getElementById("myli").style.fontFamily="微软雅黑";
document.getElementById("myli").style.fontSize="24px";

HTML DOM元素(节点)

创建新的HTML元素

要创建新的 HTML 元素 (节点)需要先创建一个元素,然后在已存在的元素中添加它。

	<button type="button" onclick="createNewP()">动态添加一个元素--appendChild</button>
	<button type="button" onclick="createNewP2()">动态添加一个元素--insertBefore</button>
	<div id="div1">
		<p id="p1">这是段落1</p>
		<p id="p2">这是段落2</p>
	</div>
	<script>
		function createNewP() {
			var newElementP = document.createElement("p"); //创建一个新的段落元素
			var text = document.createTextNode("这是我新创建的段落"); //新创建的文本节点
			//将文本的节点添加到新创建的元素中
			newElementP.appendChild(text);
			//获取一个页面已经存在的元素
			var div = document.getElementById("div1");
			//添加新创建的元素p到已经存在的元素div中
			div.appendChild(newElementP);
		}

		function createNewP2() {
			var newElementP = document.createElement("p"); //创建一个新的段落元素
			var text = document.createTextNode("这是我新创建的段落p2"); //新创建的文本节点
			//将文本的节点添加到新创建的元素中
			newElementP.appendChild(text);
			//获取一个页面已经存在的元素
			var div = document.getElementById("div1");
			var p1 = document.getElementById("p1");
			//添加新创建的元素p到已经存在的元素div中,指定插入到段落P1前面
			div.insertBefore(newElementP, p1);
		}
	</script>

未点击添加元素时
在这里插入图片描述
通过appendChild添加
在这里插入图片描述
通过insertBefore添加
在这里插入图片描述

替换HTML元素-replaceChild()

		<div id="div1">
			<p id="p1">这是一个段落。</p>
			<p id="p2">这是另外一个段落。</p>
		</div>
		<button type="button" onclick="changeElemnt()">替换p1</button>
		<script>
			function changeElemnt() {
				var newElementP = document.createElement("p"); //创建一个新的段落元素
				var text = document.createTextNode("这是我新创建的段落p"); //新创建的文本节点
				//将文本的节点添加到新创建的元素中
				newElementP.appendChild(text);
				//获取要被替换的元素p1及其父元素div
				var div = document.getElementById("div1");
				var p1 = document.getElementById("p1");
				//将div中的元素p1替换为新创建的元素
				div.replaceChild(newElementP, p1);
			}
		</script>

初始时:
在这里插入图片描述
点击替换后:
在这里插入图片描述

删除元素-removeChild()

<div id="div1">
			<p id="p1">这是一个段落。</p>
			<p id="p2">这是另外一个段落。</p>
		</div>
		<button type="button" onclick="deleteElement()">删除p1-方式1</button>
		<button type="button" onclick="deleteElement()">删除p1-方式2</button>
		<script>
			function deleteElement() {
				var div = document.getElementById("div1");
				var p1 = document.getElementById("p1");
				//从父元素div中删除子元素p1
				div.removeChild(p1);
			}

			function deleteElement2() {
				var p1 = document.getElementById("p1");
				//p1.parentNode:作用就是获取要删除元素p1的父元素div
				p1.parentNode.removeChild(p1);
			}
		</script>

初始化:
在这里插入图片描述
点击删除后:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值