当前位置: 首页 > news >正文

JavaScript基础(2)

文章目录

    • 1 DOM对象(文档对象模型:Document Object Model)
      • 1.1 模型图解
      • 1.2 节点(node):构成HTML最基本的单元,我们把常用节点分为4类
        • (1)文档节点:指HTML文档
        • (2)元素节点:指HTML中标签
        • (3)属性节点:指元素的属性
        • (4)文本节点:HTML中文本内容
    • 2 事件
      • 2.1 常用事件
      • 2.2 常见问题
      • 2.3 获取元素节点
        • 案例
      • 2.4 获取元素节点的相关节点

JavaScript对象:自定义对象、宿主对象、内建对象

内建对象: 由ES标准中定义的对象,在所有ES实现中都可以使用[Math、String、Number…]
**宿主对象:**由js环境提供的对象,如[BOM、DOM]
**自定义对象:**程序员自定义
:::

1 DOM对象(文档对象模型:Document Object Model)

1.1 模型图解

1.2 节点(node):构成HTML最基本的单元,我们把常用节点分为4类

(1)文档节点:指HTML文档

(2)元素节点:指HTML中标签

(3)属性节点:指元素的属性

(4)文本节点:HTML中文本内容

2 事件

2.1 常用事件

在这里插入图片描述

2.2 常见问题

js绑定节点后发现值是null,无法进行相应的事件操作
如下:
在这里插入图片描述

原因: 代码执行顺序所导致的,因为js位置在页面代码之前加载,此时页面还未加载,所以找不到节点元素,无法进行其他操作

解决方案: 为window绑定一个onload事件,使得页面先加载
案例:

//windows绑定onload事件,使得js代码在页面加载完之后执行
window.onload = function (){
	// 获取button对象
	var buttonT = document.getElementById("btn2");
	// button绑定点击事件
	buttonT.onclick = function(){
		// 更换button文本内容
		buttonT.innerHTML = "buttonTest";
	}
	
}

2.3 获取元素节点

需要通过document对象获取元素节点

方法名说明
getElementById()通过id获取元素节点对象
getElementsByTagName()通过标签名获取一组,元素节点对象
getElementsByName()通过name属性获取一组,元素节点对象

案例

需求:做一个图片展示页面,
条件:①有提示语:共多少张图片,此时展示第几张
②通过按钮实现图片切换,当图片到最后一张时再点击下一张跳回第一张,第一张的上一张跳回最后一张

代码:
HTML页面代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>DOM模型学习</title>
		<script type="text/javascript" src="js/test2.js"></script>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			#outer{
				width: 600px;
				margin: 60px auto;
				padding: 6px;
				background-color: skyblue;
				text-align: center;
			}
			img{
				width: 600px;
			}
		</style>
	</head>
	<body>
		<div id="outer">
			<span>图片展示:共5张,第1张</span>
			<img src="../JavaScript/img/1.jpg" alt="图片">
			<button id="prev"> 上一张</button>  <button id="next">下一张 </button>
		</div>
	</body>
</html>

js代码

window.onload = function(){
	// 通过id获取元素对象
	var pre = document.getElementById("prev");
	var nex = document.getElementById("next");
	// 定义数组存放图片路径
	var arrayImg = ["../JavaScript/img/1.jpg","../JavaScript/img/2.jpg","../JavaScript/img/3.jpg","../JavaScript/img/4.jpg","../JavaScript/img/5.jpg"];
	// 通过标签获取img元素对象
	var imgTest = document.getElementsByTagName("img")[0];
	var textT = document.getElementsByTagName("span")[0];
	var index = 0;
	nex.onclick = function(){
		index ++;
		if(index>4){
			index = 0;
		}
		imgTest.src = arrayImg[index];
		textT.innerHTML = "图片展示:共"+arrayImg.length+"张,第"+(index+1)+"张";
	} 
	pre.onclick = function(){
		index --;
		if(index<0){
			index = 4;
		}
		imgTest.src = arrayImg[index];
		textT.innerHTML = "图片展示:共"+arrayImg.length+"张,第"+(index+1)+"张";
	}
}

2.4 获取元素节点的相关节点

方法\属性说明
获取子节点
getElementsByTagName()方法,通过标签获取节点的子节点
childNodes属性,获取节点的所有子节点(会获取到空字符)
firstChild属性,获取节点第一个节点(会获取到空字符)
lastChild属性,获取节点最后一个节点(会获取到空字符)
获取父节点和兄弟节点
parentNode属性,获取当前节点父节点
previousSibling属性,当前节点的前一个兄弟元素(不包含空字符,IE8以下不支持)
nextSibling属性,当前节点的后一个兄弟节点

相关文章:

  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • 【MyBatis框架】实现增删改查功能
  • 【算法刷题日记之本手篇】左右最值最大差与顺时针打印矩阵
  • Redis 的安装
  • Netty网络编程实战2,使用Netty开发聊天室功能
  • 一文搞懂CAN总线协议帧格式
  • 使用MATLAB控制笔记本电脑的摄像头,并进行实时人脸检测和识别
  • 微信小程序|基于小程序实现透明背景人像分割
  • React中编写CSS的常见方案
  • 利用HFS软件一分钟搭建好ESP8266基于Arduino开发环境
  • MongoDB必备知识点全面总结
  • 【Linux操作系统】进程详解(下)
  • three.js入门 1 介绍和基础代码
  • pytorch-实现天气识别
  • Unity2D学习———角色移动两种方式+小怪追随+Unity演示+C#代码
  • 【Linux系统编程】快速查找errno错误码信息
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JDK 6和JDK 7中的substring()方法
  • LintCode 31. partitionArray 数组划分
  • SpringBoot几种定时任务的实现方式
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 翻译--Thinking in React
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 使用SAX解析XML
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 怎么把视频里的音乐提取出来
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • #QT(智能家居界面-界面切换)
  • (145)光线追踪距离场柔和阴影
  • (2022 CVPR) Unbiased Teacher v2
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (一)Dubbo快速入门、介绍、使用
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • ***原理与防范
  • .Net - 类的介绍
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [145] 二叉树的后序遍历 js
  • [2016.7.Test1] T1 三进制异或
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [C#]winform部署PaddleOCRV3推理模型
  • [C++基础]-初识模板
  • [Codeforces] probabilities (R1600) Part.1
  • [hdu 3652] B-number
  • [JavaWeb]——获取请求参数的方式(全面!!!)