首页 > 其他分享 >JS_Dom对象

JS_Dom对象

时间:2024-01-18 09:04:15浏览次数:31  
标签:p1 console log Dom 对象 JS pEle var 节点

1.DOM对象-01

  • 获取DOM元素

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<script>
    		<!-- 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。 -->
    		<!-- dom元素和node(节点)的区别 -->
    		<!-- 
    			dom元素指的是页面的标签,通过任意一个dom元素的关系可以找到当前页面其他任意的一个dom元素;
    			node节点指的是页面的任意元素(页面的每个东西都是节点),
    				标签 换行符 注释 空格  属性 标签内容等都可以被当做node节点
    		
    			既然是节点,也是可以被js选中的 
    		-->
    		<!-- js可以操作dom元素,包括dom元素的属性和内容 -->
                        
    		// 当文档/页面加载完毕后才会执行onload函数
    		window.onload = function(){
    			// 1.id选择  极特殊的情况
    			var p1 = document.getElementById('p1');
    			console.log(p1);
    			// 2.通过标签名选中  极少,因为重复的标签很多!!
    			var h2 = document.getElementsByTagName('h2');
    			console.log(h2);  // 数组类型
    			console.log(h2[0]); 
    			//遍历获取每一个h2
    			for (var i = 0; i < h2.length; i++) {
    				console.log(h2[i]) ;
    			}
    			//3.通过class选中  最常用!! ie6,7,8不支持! 而且ie8不支持console.log()
    			// 注意 : getElementsByClassName()函数的返回值是一个数组
    			var a = document.getElementsByClassName('a1');	
    			console.log(a); // 数组
    			console.log(a[0]); 
    			
    			//4.通过标签的name属性来获取的对象集合
    			var li = document.getElementsByName('hobbys') ;
    			console.log(li) ;
    		}
    		
    	</script>	
    </head>
    <body>
    	<!-- 任何一个标签都有class 属性 和id属性 ; 一般class用于设置样式,而id一般用于js选择 -->
    	<p id="p1">今天好冷啊!</p>
    	<h2>今天天气不错111</h2>
    	<h2>今天天气不错啊22222</h2>
    	<a class="a1">MSR学院</a>
    	<a class="a1">MSR学院</a>
    	
    	<input type="checkbox" name="hobbys" id="" value="" />
    	<input type="checkbox" name="hobbys" id="" value="" />
    	<input type="checkbox" name="hobbys" id="" value="" />
    	<input type="checkbox" name="hobbys" id="" value="" />
    	
    </body>
    
    </html>
    
  • 获取父类节点

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<style>
    		.box{
    			width: 400px;
    			height: 400px;
    			background-color: pink;
    			/* background-image: url(''); */
    		}
    		.box .innerBox{
    			width: 200px;
    			height: 200px;
    			background-color:green;
    			background-size: 100%;
    		}
    	</style>
    </head>
    <body>
    	<div class="box">
    		文字
    		<div class="innerBox">
    			
    		</div>
    	</div>
    	<button class="btn" onclick="change('我喜欢编程')">恢复</button>
    
    	<script>
    		// 添加事件的两种方式
    		
    		// 通过下标获取第一个元素
    		var innerBox = document.getElementsByClassName('innerBox')[0];
    		console.log(innerBox);
    		// api:  dom.parentNode  ==> 通过dom对象获取该dom的父类节点.
    		var pNode = innerBox.parentNode;
    		console.log(pNode);
    		var btn = document.getElementsByClassName('btn')[0];
    		// background-color 这种形式是不能做为变量或者key的  ----->   backgroundColor
    		//注意: 在js中操作css中的属性,一般会把abc-xx转换为abcXx 小驼峰命名法
    		
    		// 事件 : 点击绿色盒子 使外层盒子变红
    		// 事件的三要素 1.谁(事件对象)  2.什么事件(操作:点击?聚焦?离焦?等)  3.怎么处理(效果怎么展示)
    		//方式1 : DOM对象的onclick属性
    		innerBox.onclick = function(){
    			pNode.style.backgroundColor = 'red';
    			pNode.style.fontSize = '35px';
    			pNode.style.backgroundImage = 'url(img/01.jpg)' ;
    			pNode.style.backgroundSize = '100% 100%' ;
    		}
    		//恢复颜色
    		// btn.onclick = function(){
    		// 	pNode.style.backgroundColor = 'pink';
    		// }
    		// 方式2 : 在标签中定义事件,事件触发函数
    		function change(num){
    			alert(num);
    			pNode.style.backgroundImage = 'none';
    			pNode.style.backgroundColor = 'pink';
    		}
    		
    	</script>
    </body>
    </html>
    

2.DOM对象-02

  • 获取兄弟节点

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<p>我是p1</p>
    	<p>我是p2</p>
    	<p class="p3">我是p3</p>
    	<!--下面是p4-->
    	<p>我是p4</p>
    	
    
    	<script>
    		var p3= document.getElementsByTagName('p')[2];
    		console.log(p3);
    
    		//nextSibling 下一个兄弟节点 回车换行都会被查找. 回车称为文本节点.
    		// 嫡出 : 正妻所生的儿子
    		var p4 = p3.nextSibling;
    		console.log('nextSibling = ') ;
    		console.log(p4) ;
    		console.log('nextSibling = ') ;
    		console.log(p4.innerText) ;
    		
    		// 庶出
    		var p4 = p3.nextElementSibling;
    		console.log('nextElementSibling = ') ;
    		console.log(p4) ;
    		console.log('nextElementSibling = ' + p4.innerText) ;
    
    		//兼容
    		var p4 = p3.nextElementSibling || p3.nextSibling;
    
    		console.log(p4);
    		p4.style.backgroundColor='red' ;
    		
    		/* 
    			nextSibling属性与nextElementSibling属性的差别: 
    			nextSibling属性返回元素节点之后的兄弟节点
    					(包括文本节点、注释节点即回车、换行、空格、文本等等); 
    			nextElementSibling属性只返回元素节点之后的兄弟元素节点
    					 (不包括文本节点、注释节点);
    			注意: 空格、回车也会看作文本,以文本节点对待。 
    		*/
    	</script>
    
    </body>
    </html>
    
  • 获取孩子节点

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<div id="box" class="box">
    		<p>我是p1</p>
    		<p>我是p2</p>
    		<!-- 我是p3 -->
    		<p>我是p3</p>
    		<p>我是p4</p>
    	</div>
    
    	<script>
    		var box = document.getElementById('box');
    		//firstChild 找到第一个孩子节点,包括回车空格等文本在内.
    		var p1 = box.firstChild;
    		console.log(p1) ;
    		var p1 = box.firstElementChild;
    		console.log(p1) ;
    		//兼容写法
    		var p1 = box.firstElementChild || box.firstChild;
    		p1.style.backgroundColor = 'red';
    		// childNodes 属性返回所有的节点,包括文本节点、注释节点;
    		// children 属性只返回元素节点;
    		var ps = box.children;
    		console.log('children : ') ;
    		console.log(ps) ;
    		
    		var ps = box.childNodes;
    		console.log('childNodes : ') ;
    		console.log(ps) ;
    		
    		for(var i = 0 ; i < ps.length ; i ++){
    			console.log(ps[i]);
    			// 每个标签有一个 nodeType的属性 用于标明 当前标签的类型.
    			//  nodeType  ==  1  表示的是元素节点   记住   元素就是标签
    		    //  nodeType  ==  3  是文本节点   了解
    			// nodeType = 8   注释  了解
    			document.write(ps[i].nodeType)
    			document.write('<br>')
    		}
    	</script>
    </body>
    </html>
    
  • 创建节点

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<div class="box">
    		<p class="p1">我是p1标签</p>
    	</div>
    	<script>
    		var boxEle = document.getElementsByClassName('box')[0];
    		//内存中创建标签
    		var pEle = document.createElement('p');
    		//给标签内容
    		pEle.innerHTML='勤能补拙是良训,一份辛劳一分才!' ;
    		//插入节点   父节点.appendChild();
    		boxEle.appendChild(pEle);
    		
    		// 父节点.insertBefore(要插入的节点,参考节点);
    		var img = document.createElement('img');
    		img.src = 'img/wx.jpg';
    		// img.width = '200' ;
    		// img.height = '300' ;
    		img.style.width = '200px' ;
    		img.style.height = '300px' ;
    		img.alt = '飞了' ;
    		boxEle.insertBefore(img, pEle);
    	</script>
    </body>
    </html>
    
  • 设置节点属性

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<style>
    		.danger{
    			color: red;
    		}
    	</style>
    </head>
    <body>
    	<h1>Js 操作标签的属性</h1>
    	<p class="p1 danger" title="再看我就把你喝掉">我是一个p标签</p>
    	<button>瞅你咋地!</button>
    	<script>
    		// 重点  Attribute
    		var pEle = document.getElementsByClassName('p1')[0];
    		var btn = document.getElementsByTagName('button')[0];
    		// 获取:getAttribute(名称)
    		// 设置:setAttribute(名称, 值)
    		// 删除:removeAttribute(名称)
    
    		//添加属性 但是只能添加具有的属性
    		console.log('getAttribute : ' + pEle.getAttribute('title')) ;
    		pEle.setAttribute('title','你愁啥!');
    		console.log('getAttribute : ' + pEle.getAttribute('title')) ;
    		pEle.setAttribute('id', 'p1');
    		console.log('getAttribute id : ' + pEle.getAttribute('id')) ;
    		// pEle.setAttribute('zhangsan', 'p1');
    
    		//添加点击事件
    		pEle.onclick = function(){
    			// 获取属性
    			var clazz = this.getAttribute('title');
    			console.log(clazz);
    			
    			pEle.setAttribute('class','');
    		}
    		//当btn被点击的时候 去掉p标签的title属性
    		btn.onclick = function(){
    			pEle.removeAttribute('title');
    			pEle.setAttribute('class','danger');
    		}
    	</script>
    </body>
    </html>
    

标签:p1,console,log,Dom,对象,JS,pEle,var,节点
From: https://www.cnblogs.com/shinya/p/17971704

相关文章

  • 练习1:面向对象
    使用面向对象的思想,编写自定义描述狗的信息。设定属性包括:品种,年龄,心情,名字;方法包括:叫,跑。要求:设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问限定心情只能有“心情好”和“心情不好”两种情况,如果无效输入进行提示,默认设置“心情好”。设置构造......
  • 练习2:面向对象
    以面向对象的思想,编写自定义类描述ITpractitioner。设定属性包括:姓名,年龄,技术方向,工作年限,工作单位和职务;方法包括:工作要求:1)设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问2)限定IT从业人员必须年满15岁,无效信息需提示,并设置默认年龄为15。3)......
  • 练习3:面向对象
    #请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息。设定1)出租车类:属性包括:车型,车牌,所属出租公司;方法包括:启动,停止2)家用轿车类:属性包括:车型,车牌,车主姓名;方法包括:启动,停止要求1)分析出租车和家用轿车的公共成员,提取出父类—汽车类2)利用继承机制,实现出......
  • 面向对象
    面向对象面向对象概述###面向对象是基于过程来的事想,在程序中创建实例化对象,指挥对象做事情(指挥官)1.面向对象开发1.1语法格式classPeople:defsend_emmail(self,name)print(f'发送邮件给{name}')p1=People()p1.send_email('马云')2.类中的函数定义在p......
  • TS中扩展window对象
    TS中扩展window对象ts中扩展widows对象,方法四种:使用windows的地方,利用断言将window变为any;使用windows地方,利用接口继承扩展Window接口;利用@ts-ignore命令利用声明合并,扩展全局声明;利用声明合并,定义全局接口;示例函数://widow对象动态添加globalConfig对象functi......
  • vue3+lottie-web加载json格式动画
    项目中要用动画设计说gif会失真,用json格式动画吧。我虎躯一震,json格式动画什么鬼?lottie库什么鬼。。。。不废话,直接上重点环境:编辑器webstorm,前端技术栈vue3+vite+ts安装lottie-webyarnaddlottie-web引入lottie,引入json格式动画文件.importlottiefrom'lott......
  • 05.接口请求体 - JSON
    目录 接口请求体JSON格式请求体介绍如何构造JSON格式请求体接口请求体简介 进行HTTP请求时,发送给服务器的数据。数据格式类型可以是JSON、XML、文本、图像等格式。请求体的格式和内容取决于服务器端API的设计和开发人员的要求。飞书接口文档常用接......
  • H.265流媒体播放器EasyPlayer.js集成后无法重新拉流的原因排查
    流媒体播放器EasyPlayer是TSINGSEE青犀流媒体组件系列中关注度较高的产品,经过多年的发展和迭代,目前已经有多个应用版本,包括RTSP版、RTMP版、Pro版,以及js版,其中js版本作为网页播放器,受到了用户的广泛使用。在功能上,EasyPlayer支持直播、点播、录像、快照截图、MP4播放、多屏播放、......
  • 07.JSON 响应体断言
    什么是JSON响应体 JSON格式的响应体指的是HTTP响应中的消息体(messagebody),它是以JSON格式编码的数据。{"name":"John","age":30,"city":"NewYork"}断言JSON格式响应体使用场景 验证API接口的返回结果是否符合预期。业务场景上是否符合预......
  • Python面向对象之元类
    元类【一】概要元类是类的类,它用于定义其他类。在Python中,一切皆对象,包括类。而元类就是用来创建这些类的“类”。类是对象:在Python中,类本身也是一个对象,而元类就是用来创建这些类的对象。【二】常见用法type函数:在Python中,type函数不仅可以返回对象的类型,还可以用于创建......