一.什么是DOM对象?
DOM--Document Object Model[文档对象模型]
当网页被加载时,浏览器会创建页面的文档对象模型。
用HTML表示则:
<html>
<head>
<title>My title</title>
</head>
<body>
<a href=””>My link</a>
<h1>My header</h1>
</body>
</html>
二. 查找 HTML 元素
查找HTML元素有三种方法:
1.getElementById(id属性值);通过 id 查找 HTML 元素
实例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DOM 通过 id 查找 HTML 元素</title>
<script type="text/javascript">
//得到点击事件
function testById(){
//通过id属性值查找HTMl元素p1
var test = document.getElementById("p1");
//改变大小
test.style.fontSize="30px";
//通过id属性值查找HTMl元素p2
var test = document.getElementById("p2");
//改变颜色
test.style.color="red";
}
</script>
</head>
<body>
<p id="p1">请把我的字体大小放大</p>
<p id="p2">请把我的字体颜色变红</p>
<p id="p2">我是否与同等id属性值改变</p>
<input type="button" value="测试id属性值" onclick="testById()"/>
</body>
</html>
点击按钮事件
当有id值相等时,只等得到第一个元素。
2. getElementsByTagName(标签名)通过标签名查找 HTML 元素
通过getElementsByTagName方法得到的结果依然是数组【只有一个元素的时候也是数组】
实例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DOM 通过标签名查找 HTML 元素</title>
<script type="text/javascript">
function testByTagName(){
var test = document.getElementsByTagName("p");
test[0].style.color="red";
test[1].style.color="brown";
test[2].style.color="yellow";
}
</script>
</head>
<body>
<p>我是第一个</p>
<p>我是第二个</p>
<p>我是第三个</p>
<input type="button"value="测试标签名" onclick="testByTagName()"/>
</body>
</html>
点击按钮事件
3. getElementsByClassName(class属性值)通过类名找到 HTML 元素
通过getElementsByClassName(class属性值)方法得到的结果依然是数组
实例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DOM通过类名找到 HTML 元素</title>
<script type="text/javascript">
function testByClassName(){
var test1 = document.getElementsByClassName("p1");
test1[0].style.color="red";
var test2 = document.getElementsByClassName("p2");
test2[0].style.color="green";
test2[0].style.fontSize="30px";
test2[1].style.color="blue";
}
</script>
</head>
<body>
<p class="p1">嗨!小可爱们!</p>
<p class="p2">嗨!小可爱们!</p>
<p class="p2">嗨!小可爱们!</p>
<input type="button" value="测试标签名" onclick="testByClassName()"/>
</body>
</html>
点击按钮事件
三.DOM可以完成的功能
1.JavaScript 能够改变页面中的所有 HTML 元素
<1>.innerHTML 属性--改变页面中HTML 元素的文本内容
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function shao(){
var x = document.getElementById("p1");
alert(x.innerHTML);
}
</script>
</head>
<body>
<p id="p1">我<a href="#">爱</a>你</p>
<input type="button"value="测试"onclick="shao()" />
</body>
</html>
注意:innerHTML中设置的字符串内容中有html标记,那么这个被包含的html标记会被解释运行。
<2>.innerText 属性--改变页面中HTML 元素的文本内容
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function shao(){
var x = document.getElementById("p1");
alert(x.innerText);
}
</script>
</head>
<body>
<p id="p1">我<a href="#">爱</a>你</p>
<input type="button"value="测试"onclick="shao()" />
</body>
</html>
注意:innerText中设置的字符串内容中有html标记,那么这个被包含的html标记会被作为字符串输出。
2.JavaScript 能够改变页面中的所有 HTML 属性
属性在html和css中都有。
Html中的属性---是给浏览器解释运行html标记时通过附加信息。
往往出现在html的开始标记中,如果有多个中间使用空格分离。
<1.>修改内容
使用innerHTML改变:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>innerHTML 属性</title>
<script type="text/javascript">
function shao(){
var test = document.getElementsByTagName("p");
test[0].innerHTML="我不喜欢你!";
}
</script>
</head>
<body>
<p>我喜欢你!</p>
<input type="button"value="改变内容" onclick="shao()"/>
</body>
</html>
改变后:
使用innerText改变:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>innerText 属性</title>
<script type="text/javascript">
function shao(){
var test = document.getElementById("p1");
test.innerText="I was a king of the wild!";
}
</script>
</head>
<body>
<p id="p1">我是一名<a href="">野王</a>!</p>
<input type="button"value="改为英文" onclick="shao()"/>
</body>
</html>
改变后:
<2.>得到和修改属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>得到修改属性</title>
<script type="text/javascript">
function src1(){
var img1 = document.getElementsByTagName("img");
//得到图片路径
alert(img1[0].src);
}
function src2(){
var img2 = document.getElementsByTagName("img");
img2[0].src="img/avatar2.png";
}
</script>
</head>
<body>
<img src="img/avatar.png" >
<input type="button"value="得到" onclick="src1()"/>
<input type="button"value="修改" onclick="src2()"/>
</body>
</html>
得到路径:
原图:
修改后:
3.JavaScript 能够改变页面中的所有 CSS 样式
行内样式:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>图片显示与隐藏</title>
<script type="text/javascript">
function shao(){
var img1 = document.getElementsByTagName("img");
var src=img1[0].style.display;
// img1[0].style.display="block";
if(src=="block"){
img1[0].style.display="none";
}else{
img1[0].style.display="block";
}
}
</script>
</head>
<body>
<input type="button"value="按钮" onclick="shao()"/><br>
<img src="img/2048559.jpg" style="width: 300px;height: 300px;">
</body>
</html>
图片的显示与隐藏:
内嵌样式:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.img2 {
width: 100px;
height: 100px;
border: 10px solid rosybrown;
}
</style>
<script type="text/javascript">
function shao() {
var imgobj = document.getElementById("img1");
imgobj.className = "img2";
}
</script>
</head>
<body>
<img id="img1" src="img/avatar2.png" /><br>
<input type="button" value="测试控制css" onclick="shao();">
</body>
</html>
4.JavaScript 能够对页面中的所有事件做出反应
<1>页面初始化事件
第一种:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面初始化事件</title>
<script>
function shao() {
alert("页面初始化事件");
}
</script>
</head>
<body onload="shao()">
</body>
</html>
第二种:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>页面初始化事件</title>
<script type="text/javascript">
window.onload = function() {
alert("页面初始化事件");
}
</script>
</head>
<body>
</body>
</html>
都可以显示页面初始化事件。
<2.>点击事件
第一种:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>点击事件</title>
<script type="text/javascript">
window.onload = function() {
var inputobj = document.getElementsByTagName("input");
inputobj[0].onclick = function() {
alert("看见我没?")
}
}
</script>
</head>
<body>
<input type="button" value="按钮" />
</body>
</html>
第二种:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个 Web 页面</h1>
<p>我的第一个段落。</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction() {
document.write(Date());
}
</script>
</body>
</html>
<3.>文本框的聚焦/失焦
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>onfocus和onblur</title>
<script type="text/javascript">
window.onload = function() {
//测试文本框的聚焦/失焦
var testObj1 = document.getElementById("test1");
//设置聚焦事件
testObj1.onfocus = function(){
//清空文本框
testObj1.value="";
}
//设置失焦事件
testObj1.onblur = function() {
//清空文本框
alert(testObj1.value);
}
}
</script>
</head>
<body>
<input id="test1" type="text" value="请输入账号" />
</body>
</html>
<4.>表单提交事件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function testsubmit() {
alert("表单提交事件!");
//return true;提交
return false;//不提交
}
</script>
</head>
<body>
<form action="login" method="get" onsubmit="return testsubmit();">
<input type="text" name="username" /><br>
<input type="password" name="password" /><br>
<input type="submit" value="登陆" />
</form>
</body>
</html>
当为true时,可以提交到后端。
当为false时,不可以提交到后端。
<5.>鼠标事件
第一种
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>鼠标进入移开</title>
<script type="text/javascript">
window.onload = function() {
var imgObj = document.getElementById("img1");
//进入
imgObj.onmouseover=function(){
imgObj.width="200";
imgObj.height="200";
}
//移开
imgObj.onmouseout=function(){
imgObj.width="100";
imgObj.height="100";
}
}
</script>
</head>
<body>
<img id="img1" src="img/2048559.jpg" width="100px" height="100px">
</body>
</html>
第二种:
js文件
function fangda() {
var imgdomobj = document.getElementById("new1");
imgdomobj.width = "200";
imgdomobj.height = "200";
}
function suoxiao() {
var imgdomobj = document.getElementById("new1");
imgdomobj.width = "100";
imgdomobj.height = "100";
}
html文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML head 元素中的子元素</title>
<script src="new1.js"></script>
</head>
<body>
<h4>HTML head 元素中的子元素--script元素【为当前网页中添加javascript脚本程序】</h4>
<img src="img/微信图片_20210812182844.jpg" id="new1"
width="100px" height="100px"
onmouseover="fangda();" onmouseout="suoxiao();"/>
</body>
</html>
<6.>键盘事件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>键盘事件</title>
<script type="text/javascript">
function testkey(event) {
var code = event.keyCode;
if (code == 37) {
alert("向左");
}
if (code == 38) {
alert("向上");
}
if (code == 39) {
alert("向右");
}
if (code == 40) {
alert("向下");
}
if (code == 13) {
alert("暂停");
}
}
</script>
</head>
<body onkeydown="testkey(event);">
</body>
</html>
上键
下键
左键
右键
四.创建和删除HTML 元素
1.创建appendChild
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>添加元素</title>
<style type="text/css">
#div1 {
width: 300px;
height: 300px;
background-color: cadetblue;
}
</style>
<script type="text/javascript">
function shao() {
//document.createElement("元素名称"); -- 创建html元素
//document.createTextNode("文本内容"); -- 创建元素的文本内容
//父元素的dom对象.appendChild(node); -- 向父元素中追加元素
var img1 = document.createElement("img");
img1.src="img/avatar2.png";
var divobj=document.getElementById("div1");
divobj.appendChild(img1);
}
</script>
</head>
<body>
<div id="div1">
</div>
<input type="button" value="添加元素" onclick="shao()" />
</body>
</html>
2.删除removeChild
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>删除元素</title>
<style type="text/css">
#div1{
width: 300px;
height: 300px;
background-color: bisque;
}
</style>
<script type="text/javascript">
function shao(){
var divobj=document.getElementById("div1");
var hdom=document.getElementById("p1");
divobj.removeChild(hdom);
}
</script>
</head>
<body>
<div id="div1">
<h4>我喜欢你</h4>
<p id="p1">我喜欢你</p>
<b>我喜欢你</b>
</div>
<input type="button"value="删除元素" onclick="shao()"/>
</body>
</html>