JavaScript.04.DOM树

一、知识大纲

在这里插入图片描述

二、DOM树的概念

1.DOM概念:DOM全称为:Document Object Model 中文名叫:文档对象模型
2.DOM树概念:
(1)DOM树中的节点类型和节点关系
在这里插入图片描述
(2)文档(document):一个页面就是一个文档,同时也是网页中最大的父级元素
(3)元素(element):页面中的所有标签都是元素,元素可以看成是对象
(4)节点(node):页面中的内容都是节点:标签,文本
(5)root:根
解释:
document是根节点
上级和下级节点是父子关系:上级节点是下级节点的父节点,下级节点则是上级节点的子节点
同一级别的节点之间是“同级关系”,或者称为“同胞关系”

三、根据父级,子级,同级关系查询元素

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	<div id="div1">
		<img id="img1" src="img/1.gif" >
		<img id="img2" src="img/2.gif" >
		<img id="img3" src="img/3.gif" >
	</div>
	<script type="text/javascript">
		//网页中最大的父级元素是document
		
		//parent
		console.log(img1.parentElement)//拿到他的父级元素
		//img1的父元素设置一个背景颜色
		img1.parentElement.style.background="yellow"
		//查询div中所有的子元素
		console.log(div1.children)
		//查询div中有几个子元素
		console.log(div1.children.length)
		console.log(div1.childElementCount)
		//查询第一个子节点和最后一个子节点
		console.log(div1.firstElementChild,div1.lastElementChild)
		//拿到上一个或者下一个(只适用于同级关系)
		console.log(img2.previousElementSibling)
		console.log(img2.nextElementSibling)
	</script>
	</body>
</html>

四、增加图片实操

1.document.createElement(TaName):根据标签名创建Element元素
2.Element.setAttribute(name,value):设置标签中的属性
3.Element.appendChild(Node):在内容末尾添加子节点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	<div id="div1">
		<img id="img1" src="img/1.gif" >
		<img id="img2" src="img/2.gif" >
		<img id="img3" src="img/3.gif" >
	</div>
	<script type="text/javascript">
		function fn2(){
			//先创建一个图片标签
			var i=document.createElement("img")
			//设置标签上的属性   Attribute属性
			// i.setAttribute("src","img/4.gif")//下面是简写
			i.src="img/4.gif"//这种方式不是所有的属性都能用
			//把图片标签放到div中
			div1.appendChild(i)
		}
	</script>
	<button onclick="fn2()">增一张图片</button>
	</body>
</html>

五、删除图片实操

1.Element.lastElementChild:获得最后一个子元素
2.Element.removeChild(Node):移除子节点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	<div id="div1">
		<img id="img1" src="img/1.gif" >
		<img id="img2" src="img/2.gif" >
		<img id="img3" src="img/3.gif" >
	</div>
	<script type="text/javascript">
		function fn3(){
			//每点击一次  删除最后一张
			var i=div1.lastElementChild
			//删除  通过父元素  来删除  子元素
			div1.removeChild(i)
		}
	</script>
	<button onclick="fn3()">删除最后一张图片</button>
	</body>
</html>

六、复制图片实操

1.Element.cloneNode(boolean):复制节点(是否复制子节点/默认是false)
2.Element.setAttribute(name,value):设置标签中的属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	<div id="div1">
		<img id="img1" src="img/1.gif" >
		<img id="img2" src="img/2.gif" >
		<img id="img3" src="img/3.gif" >
	</div>
	<script type="text/javascript">
		function fn4(){
			//复制节点
			var d=div1.cloneNode(true)
			//节点复制的时候把属性带过去了
			//设置标签中的id
			d.setAttribute("id","")//下面是简写
			// d.id=""
			
			//加到body中
			document.body.appendChild(d)
		}
	</script>
	<button onclick="fn4()">复制div</button>
	</body>
</html>

七、表格的增加与删除

1.这里要注意的是表格有三个部分:(1)thead (2)tbody (3)tfoot
(在不指明位置时,表格里所有的元素默认放在tbody中,所以表格中元素的父级是tbody,不是table)
2.tr.innerHTML="" :删除标签里的内容
3.tr.outerHTML="" :删除标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border id="table">
        <tr>
            <td><input type="checkbox" onclick="fn1(this.checked)"></td>
            <td>商品名字</td>
            <td>商品价格</td>
            <td>商品操作</td>
        </tr>
        <tr>
            <td><input type="checkbox"></td>
            <td>🍌🍌🍌🍌</td>
            <td>18.9</td>
            <td>
                <button>删除</button>
            </td>
        </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>🍌🍌🍌🍌</td>
        <td>18.9</td>
        <td>
            <button>删除</button>
        </td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>🍌🍌🍌🍌</td>
        <td>18.9</td>
        <td>
            <button>删除</button>
        </td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>🍌🍌🍌🍌</td>
        <td>18.9</td>
        <td>
            <button>删除</button>
        </td>
    </tr>
    <tr>
        <td><input type="checkbox"></td>
        <td>🍌🍌🍌🍌</td>
        <td>18.9</td>
        <td>
            <button>删除</button>
        </td>
    </tr>
</table>
<script>
    var fn1=(status)=>{
        //找到页面中所有的输入框(多选框)
        //页面中拿元素: id,标签名,类名,名字
        var is=document.getElementsByTagName("input")
        //设置状态和status相同
        for(let i of is){
            i.checked=status
        }
    }

    function load() {
        //css选择器来选择元素
        for(let i of document.querySelectorAll("td button")){//所有的td标签里面的button都会被找出来
            //i是表格中每一个按钮
            i.onclick=del//不用加括号
        }
    }

    function del() {
        //找到tr
        //this 谁调用了这个函数  this就是谁
        var tr=this.parentElement.parentElement
        //根据tr拿到父元素  根据父元素删除tr
		//tr.parentElement.removeChild(tr)
        
		//根据table拿到第一个儿子
		//table.firstElementChild.removeChild(tr)

        //去除该标签中的内容
        //tr.innerHTML=""

        tr.outerHTML=""

    }

    function delLast(){
		//如果表格里面的行大于一行就删除最后一行,这样就不能删除标题那行
        if(table.rows.length>1)
            table.deleteRow(-1)
    }

    function delAll() {
		//删除表格所有数据
        while(table.rows.length>1){
            table.deleteRow(-1)
        }
    }

    function addRow() {
        var tr=table.insertRow()
        var d1=tr.insertCell()
        var d2=tr.insertCell()
        var d3=tr.insertCell()
        var d4=tr.insertCell()
        //内容     直接把一个元素变成一个字是不合适的所有要. 
        d1.innerHTML='<input type="checkbox">'
        d2.textContent="🍉🍉🍉🍉🍉"
        d3.textContent="90.0"
        d4.innerHTML="<button>删除</button>"
        load()//重新给按钮设置点击事件
    }

    load()
</script>
<button onclick="delLast()">删除表格最后一行</button>
<button onclick="delAll()">删除表格所有数据</button>
<button onclick="addRow()">增加表格数据</button>
</body>
</html>

感谢大家的观看,今天的分享到此为止,需要跟多的实操案例可以私信我,全程免费。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值