JS的DOM操作——操作文档树

文档树中的节点们 我们可以用js进行增删改查。

查(获取)

<div id="box">

</div>

<script>
    var box=document.querySelector("#box")
</script>

:分两步——>1、创建元素   2、将创建的元素添加到文档树中 

1、创建元素 :用createElement(),小括号内填写的是字符串格式的标签名,如:createElement("div")创建div标签、createElement("span")创建span标签、createElement("input")创建input标签。

创建的元素不存在文档对象模型document,不会渲染到页面上。

2、将创建的元素添加到文档树中:appendChild(),小括号内填写的是我们上一步所创建的元素。例如:x.appendChild(y),把y节点对象添加到x节点中。

改:用innerHTML修改内容

具体代码展示:

<div id="box">

</div>

<script>
    var box=document.querySelector("#box")
    //创建一个元素
    var cj=document.createElement("div")
    //添加到box中
    box.appendChild(cj)
    //我们再给我们新创建的新标签添加一点内容
    cj.innerHTML = "我新建的"
</script>

运行后:

 

除了上述方法添加元素外,我们还可以只使用innerHTML来实现,这里要用到ES6新出的模板字符串,模板字符串也能识别html标签。

<div id="box">

</div>

<script>
    var box=document.querySelector("#box")
   box.innerHTML=`<div>我是用模板字符串书写的</div>`
</script>

运行后:

 我们在用innerHTML给元素添加内容时,会把以前的内容覆盖掉,那么我们怎么解决呢?

解决方案:创建一个元素 设置它的innerHTML  然后把它添加到box2或者直接在它的innerHTML上加内容。

具体代码说明:

<div id="box">
	我是box
</div>

<script>
    var box=document.querySelector("#box")
   var newbox=document.createElement("div")
   newbox.innerHTML="666"
   box.appendChild(newbox)
    box.innerHTML+="666"
</script>

 运行结果:

:remove()移除自己、removeChild()移除自己的子节点

remove():

        <div class="box">
			<div class="box1">666</div>
			<div></div>
			<div></div>
		</div>

		<script>
			var box1=document.querySelector(".box1")
			box1.remove()
			
		</script>

运行过后:

可以看到类名为box1的div标签已经被删掉了。 

removeChild():

		<div class="box">
			<div class="box1">666</div>
			<div></div>
			<div></div>
		</div>

		<script>
			var box=document.querySelector(".box")
			var box1=document.querySelector(".box1")
			box.removeChild(box1)			
		</script>

同样也删除了 类名为box1的div标签 

说到清除自己的节点,我们还可以通过innerHTML清除自己的子节点,可以innerHTML的功能非常强大,就靠它就能实现增删改查的功能。

清空所有的子节点:

		<div class="box">
			<div class="box1">666</div>
			<div></div>
			<div></div>
		</div>
        <div class="box3">333<div>
		<script>
			var box=document.querySelector(".box")
			box.innerHTML=""	
		</script>

可以看到类名为box的div标签的所有的子节点都被移除了。

克隆:cloneNode() 克隆的小括号有一个参数true,可根据自己的需求选择是否写true。

有true时:会克隆后代元素和所有的事件

无true时:不会克隆事件。

补充:插入节点insertBefore(参数1,参数2),参数1为要插入的节点,参数2为要插入位置的后面那个节点。

代码展示说明:

	  <div class="box1">
        <div class="box02"></div>
        <div class="box2">
            <div class="box3">666</div>
        </div>
    </div>
    <script>
        var box1=document.querySelector(".box1")
        var box2=document.querySelector(".box2")
        //创建我们要插入的节点
        var ins=document.createElement("div")
        //在box1里面的box2前面插入我们创建的节点
        box1.insertBefore(ins,box2)
    </script>

 运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值