DOM关于元素的获取

DOM(document object model),文档对象模型

DOM把html文档分为一个个节点

1、元素,叫做元素节点

2、属性,叫做属性节点

3、文本,叫做文本节点

4、注释,叫做注释节点

一、document对象

当html文档载入浏览器的时候,会把html文档自动添加到document对象下。

方法和属性

//输出内容到html文档中
document.write("1233");
//writeln之间有空格,writeln后面会添加一个换行符
document.writeln("3556");
document.writeln("3556");
<div class="test">我是div1</div>
<div class="test" id="two">我是div2</div>
<div class="test1" name="div3">我是div3</div>

1、document.querySelector(n);

n:代表css的选择器

用来获取到具有该选择器的第一元素

如果选择有多个同样选择器的元素时,只能获取到第一个具有该选择器的元素。

var test = document.querySelector("div");
console.log(test);

2、document.querySelectorAll(n);

n:代表css的选择器

用来获取到所有具有该选择器的元素,返回一个节点列表(类数组)。

要获取节点列表里面的元素,可以通过数组获取元素的方法

var alltest = document.querySelectorAll("div");
console.log(alltest);

3、document.getElementsByTagName(elementName);

elementName:代表标签名

可以通过标签名来获取到所有具有该标签名的元素,返回值是一个html集合(类数组)。

要获取节点列表里面的元素,可以通过数组获取元素的方法

var allarget= document.getElementsByTagName("div");
console.log(allarget);

4、document.getElementsByClassName(className);

className:代表类名

获取到所有具有该类名的元素,返回值是一个html集合

var ele = document.getElementsByClassName("test");
console.log(ele);
console.log(ele[0]);

5、document.getElementById(idName);

			var div3=document.getElementsByName("div3");
			console.log(div3);

idName:代表id名

用来获取具有该id名的元素,返回值就是该元素。

var two=document.getElementById("two");
console.log(two);
<div class="test1" name="div3">我是div3</div>
var div3=document.getElementsByName("div3");
console.log(div3);

用querySelector和get~方法来获取元素的区别

1、性能不一样

get方法比query方法好

2、query静态获取元素;get动态获取元素

添加监听事件(添加事件句柄)

document.addEventListener(event,callback);

event:代表我们需要添加的事件类型,比如单击事件(click),双击事件(dblclick)…

callback:代表一个回调函数,就是我们做的事情都定义在该函数里面。

var div3=document.querySelector(".test1");
div3.addEventListener("click",function(){
	alert("未成年人请在父母陪同下观看");
})

创建元素

document.createElement(elName);

elName:代表需要创建的标签名

添加元素

parent.appendChild(child);

parent:代表需要添加元素的父级元素

child:代表我们创建的元素/文本

创建一个文本节点

document.createTexNode(str);

str:代表我们需要填入的内容

var p = document.createElement("p");
two.appendChild(p);
var txt1 = document.createTextNode("我是通过文本节点创建出来的内容");
var txt2 = document.createTextNode("我是另一个文本");
var isclick = true;
//p.appendChild(txt);
two.addEventListener("click",function(){
				if(isclick){
					p.appendChild(txt1);
				}else{
					p.appendChild(txt2);
				}
				isclick=!isclick;//取反,意思是把我们原来正确的变为错误的,把错误的变为正确的;结果为布尔值
			})
			var str="";
			console.log(!str);

innerText,innerHTML

向元素添加文本内容,再次添加的时候会覆盖掉原来的内容。

区别

innerText不能识别标签

innerHTML可以识别标签

			var h1=document.createElement("h1");
			h1.innerText="我是通过innertext添加的文本";
			console.log(document.body);
			document.body.appendChild(h1);
			h1.addEventListener("click",function(){
				if(isclick){
					h1.innerText="我是点击进来的内容";
				}else{
					h1.innerText="我是通过innertext添加的文本";
				}
				isclick=!isclick;
			})
			
			var h2=document.createElement("h2");
			document.body.appendChild(h2);
			h2.innerHTML="我是通过innerHTML添加进来的";
			h2.innerHTML="<a>再次添加内容</a>";

创建属性节点

document.createAttribute(attr);

attr:代表我们要创建的属性名

给属性节点赋值

通过value给属性节点赋值,例如:clName.value=“h2”;

给元素添加属性节点

setAttributeNode(attrrName);

attrName:代表我们创建的属性节点名。

			var clName=document.createAttribute("class");
			clName.value="h2";
			h2.setAttributeNode(clName);
			
			h2.addEventListener("click",function(){
				clName.value="col";
			})
			
			//document.documentElement返回文档根节点
			console.log(document.documentElement);

获取所以img标签

document.image

			var imgs = document.images;
			console.log(imgs[0].src);
			//点击切换图片
			imgs[0].addEventListener("click",function(){
				if(isclick){
					imgs[0].src="img/dongtai-5.png";
				}else{
					imgs[0].src="img/dongtai-4.png";
				}
				isclick=!isclick;
			})

移除事件句柄

document.removeEventlistener(event,callback);

和添加事件句柄的参数一样

			document.addEventListener("click",myFun);
			function myFun(){
				console.log("添加事件监听");
			}
			document.removeEventListener("click",myFun);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值