JS DOM(3)

一:获取元素的css
 

元素.style.属性
只能获取行内样式
getComputedStyle (元素).属性名(IE不兼容)
getComputedStyle是window下一个方法;把对应的元素传给这个方法
他是window上的一个属性
获取浏览器计算的样式
如果是复合属性名,把-去掉,换成驼峰命名;
`console.log(getComputedStyle(元素).属性名)``
`console.log(getComputedStyle(box).width)``
`console.log(getComputedStyle(box)[‘width’])``
currentStyle(只有IE兼容)
元素.currentStyle.属性名
IE8及以下,用这个方法获取元素css中设置的样式;
他是元素身上的属性

二、节点的遍历二、节点的遍历一、获取节点

通过id查询节点document.getElementById

通过标签查询节点(查询的是一类节点,返回的是一个类似数组的HTML集合document.getElementsByTagName

通过类名来获取节点元素(返回的是一个类似数组的HTML集合)
var lo = document.getElementsByClassName("lo") 
 

通过name来获取节点元素(返回的是一个类似数组的节点列表NodeList)
var frc = document.getElementsByName("frc") 
 querySelector(通过css选择器的方式来获取节点)
var p2 = document.querySelector("p:nth-of-type(2)")
var p3 = document.querySelector(".p3")

 

二、节点的遍历

//for循环遍历
for(let i =0;i<p.length;i++){
 	console.log(p[i],p[i].innerText)
}
 
//转化为数组的遍历,elem为遍历的元素
Array.from(p).forEach(function(elem){
	console.log(elem,elem.innerText)
})

三、节点关系查找


<div id="parent">
	<p>我是第一个</p>
	<p id="p2">我是第二个</p>
	<p>我是第三个</p>
	<h5>我是最后一个</h5>
</div>
 
// parent的第一个子节点
var frist = parent.firstElementChild; 
 
//parent的第一个最后一个子节点
var last = parent.lastElementChild; 
 
//parentElement,表示元素的父节点元素
console.log('p2的父节点',p2.parentElement) 
 
//previousElementSibling表示p2的上一个兄弟元素节点
console.log('p2的上一个兄弟',p2.previousElementSibling); 
 
//nextElementSibling表示p2的下一个兄弟元素节点
console.log('p2的下一个兄弟',p2.nextElementSibling); 

 四,属性的修改 

<h1>属性修改</h1>
<img src="../img/分组%2035%20(1).png" alt="图片">
<br>
<br>
<button type="button" onclick="changeImg()">修改图片</button>
<script type="text/javascript">
	function changeImg(){
		var img=document.querySelector("img")
 
        //setAttribute设置属性
		img.setAttribute("src","../img/分组%2035%20(2).png")
 
        //removeAttribute移除属性
		img.removeAttribute("alt")
	}
</script>

五、创建和插入节点 /复制节点和删除节点 
 

function create1Img(){
 
    //通过js创建一张图片
    var img = document.createElement("img");
 
    //给图片的src一个指定的路径
    img.setAttribute("src","../img/分组%2035%20(1).png")
 
    //获取要插入得位置
    var h5 = document.getElementById('h5')
 
    //插入到获取得位置的前面
    document.body.insertBefore(img,h5)
 
}
 
function copy(){
 
    //获取要复制得照片
    var pic1 = document.getElementById('pic1')
 
    //复制照片,false只是当前节点,true包含子节点
    var img = pic1.cloneNode(false);
 
    //将图片插入到body标签中
    document.body.appendChild(img)
 
}
 
function del(){
    //获取到要删除得对象
    var pic = document.querySelector('img:last-of-type')
 
    //删除,自己删除自己
    pic.remove();
 
    //通过父节点来删除
    // pic.parentElement.removeChild(pic);
 
}

 六,元素与父元素距离

  1. offsetLeft与相对父元素的左偏移值
  2. offsetTop与相对父元素的垂直偏移值
  3. offsetParent相对父元素
    元素的父辈元素有position非static值

七,元素的滚动距离

  1. elem.scrollTop
  2. elem.scrollLeft
  3. 浏览器滚动距离
    document.documentElement.scrollTop
    document.body.scrollTop

 

八, 事件的绑定与解绑
1.绑定
btn.οnclick=function(){}

btn.addEventListener(type,funName)

2.解绑
btn.οnclick=null

btn.removeEventListener(type,funName)

匿名函数不能解绑

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<h1>事件的绑定与解绑</h1>
		<button class="btn1">按钮1</button>
		<button class="btn2">按钮2</button>
		<button class="btn3">解绑say</button>
		<script>
			// 给btn2注册2个单击事件
			function say(){
				// this指向的是btn2这个按钮
				alert(this.innerText);
			}
			function doit(){
				alert("我要挣100万");
			}
			var btn2 = document.querySelector(".btn2");
			btn2.addEventListener("click",say);
			btn2.addEventListener("click",doit);
			btn2.addEventListener("click",function(){
				alert("我要娶高富帅");
			})
			
			
			//  btn3单击解绑 say方法
			var btn3 = document.querySelector(".btn3");
			btn3.onclick = function(){
				// 解绑了btn2.click事件的 say函数响应
				btn2.removeEventListener("click",say);
				btn2.removeEventListener("click",doit);
				 
				
			}
			
			
			// 给按钮1添加事件
			var btn1 = document.querySelector(".btn1");
			btn1.onclick = function(){
				alert("啊,我被点击了,这是最后一次");
				btn1.onclick = null;
			}
		</script>
	</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值