首页 > 编程语言 >【JavaScript】49_DOM编程:DOM修改与demo

【JavaScript】49_DOM编程:DOM修改与demo

时间:2023-03-19 12:31:51浏览次数:71  
标签:const 删除 DOM demo JavaScript tr li 超链接 document

10、DOM的修改

appendChild()

用于给一个节点添加子节点

list.appendChild(li)

insertAdjacentElement()

可以向元素的任意位置添加元素

两个参数:

1.要添加的位置 2.要添加的元素

beforeend 标签的最后 afterbegin 标签的开始

beforebegin 在元素的前边插入元素(兄弟元素) afterend 在元素的后边插入元素(兄弟元素)

list.insertAdjacentElement("afterend", li)

通过点击按钮,往页面中添加内容,修改内容,删除内容

<body>
<button id="btn01">按钮1</button>
<button id="btn02">按钮2</button>

<hr>
<ul id="list">
<li id="swk">孙悟空</li>
<li id="zbj">猪八戒</li>
<li id="shs">沙和尚</li>
</ul>

<script>
//点击按钮后,向ul中添加一个唐僧
//获取ul
const list = document.getElementById('list')

//获取按钮
const btn01 = document.getElementById('btn01')
btn01.onclick = function(){
//<li id='shs'>沙和尚</li>
//创建一个li
const li = document.createElement('li')
//向li中添加文本
li.textContent = '唐僧'
//给li添加id属性
li.id = 'ts'

list.insertAdjacentHTML('beforeend',"<li id='bgj'>白骨精</li>")
}

const btn02 = document.getElementById("btn02")
btn02.onclick = function(){
// 创建一个蜘蛛精替换孙悟空
const li = document.createElement("li")
li.textContent = "蜘蛛精"
li.id = "zzj"

// 获取swk
const swk = document.getElementById("swk")

// replaceWith() 使用一个元素替换当前元素
// swk.replaceWith(li)

// remove()方法用来删除当前元素
swk.remove()
}
</script>
</body>

11、练习

可以在表格中插入数据,删除数据

容易被插入攻击的写法:(

//这种写法,容易别xss攻击
tbody.insertAdjacentHTML(
'beforeend',
`
<tr>
<td>${name}</td>
<td>${email}</td>
<td>${salary}</td>
<td><a href="javascript:;">删除</a></td>
`
)

区别于alert的弹窗

含有确定和取消两个按钮

//弹出一个友好的提示
if(confirm('确认要删除【' + empName + '】吗?')){
//删除tr
tr.remove()
}

【JavaScript】49_DOM编程:DOM修改与demo_JavaScript

本练习中的超链接,我们是不希望发生跳转,但是跳转行为是超链接的默认行为

只要点击超链接就会触发页面的跳转,事件中可以通过取消默认行为来阻止超链接的跳转

使用return false来取消默认行为,只在 ​​xxx.xxx​​ = function(){}这种形式绑定的事件中才适用 -----> return false

<a href="javascript:;">//可以阻止链接的跳转

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.outer {
width: 400px;
margin: 100px auto;
text-align: center;
}

table {
width: 400px;
border-collapse: collapse;
margin-bottom: 20px;
}

td,
th {
border: 1px black solid;
padding: 10px 0;
}

form div {
margin: 10px 0;
}
</style>
<script>
document.addEventListener("DOMContentLoaded",function(){
//点击删除超链接后,删除当前的员工信息
function delEmpHandler(){
// 本练习中的超链接,我们是不希望发生跳转,但是跳转行为是超链接的默认行为
// 只要点击超链接就会触发页面的跳转,事件中可以通过取消默认行为来阻止超链接的跳转
// 使用return false来取消默认行为,只在 xxx.xxx = function(){}这种形式绑定的事件中才适用
// return false

// 删除当前员工 删除当前超链接所在的tr
// console.log(this)

// this表示当前点击的超链接
const tr = this.parentNode.parentNode

//获取要删除的员工的姓名
// const empName = tr.getElementsByTagName("td")[0].textContent
const empName = tr.firstElementChild.textContent//两种方式都可以

//弹出一个友好的提示
if(confirm('确认要删除【' + empName + '】吗?')){
//删除tr
tr.remove()
}
}

//获取所有的超链接
const links = document.links
//为他们绑定单级响应函数
for(let i = 0; i < links.length; i++){
links[i].onclick = delEmpHandler

// links[i].addEventListener("click", function(){
// alert(123)
// return false // 无法取消默认行为,依然后进行跳转
// })
}

//点击按钮后,将用户的信息插入到表格中
//获取tbody
const tbody = document.querySelector('tbody')
const btn = document.getElementById("btn")
btn.onclick = function(){
//获取用户输入的数据
const name = document.getElementById('name').value
const email = document.getElementById('email').value
const salary = document.getElementById('salary').value

//将获取到的数据设置DOM对象
/*
<tr>
<td>孙悟空</td>
<td>[email protected]</td>
<td>10000</td>
<td><a href="javascript:;">删除</a></td>
</tr>
*/

// 创建元素
const tr = document.createElement("tr")

// 创建td
const nameTd = document.createElement("td")
const emailTd = document.createElement("td")
const salaryTd = document.createElement("td")

// 添加文本
nameTd.innerText = name
emailTd.textContent = email
salaryTd.textContent = salary

// 将三个td添加到tr中
tr.appendChild(nameTd)
tr.appendChild(emailTd)
tr.appendChild(salaryTd)
tr.insertAdjacentHTML("beforeend", '<td><a href="javascript:;">删除</a></td>')

tbody.appendChild(tr)
/* //这种写法,容易别xss攻击
tbody.insertAdjacentHTML(
'beforeend',
`
<tr>
<td>${name}</td>
<td>${email}</td>
<td>${salary}</td>
<td><a href="javascript:;">删除</a></td>
`
) */

// 由于上边的超链接是新添加的,所以它的上边并没有绑定单级响应函数,所以新添加的员工无法删除
// 解决方式:为新添加的超链接单独绑定响应函数
links[links.length-1].onclick = delEmpHandler
}
})
</script>
</head>
<body>
<div class="outer">
<table>
<tbody>
<tr>
<th>姓名</th>
<th>邮件</th>
<th>薪资</th>
<th>操作</th>
</tr>
<tr>
<td>孙悟空</td>
<td>[email protected]</td>
<td>10000</td>
<td><a href="javascript:;">删除</a></td>
</tr>
<tr>
<td>猪八戒</td>
<td>[email protected]</td>
<td>8000</td>
<td><a href="javascript:;">删除</a></td>
</tr>
<tr>
<td>沙和尚</td>
<td>[email protected]</td>
<td>6000</td>
<td><a href="javascript:;">删除</a></td>
</tr>
</tbody>
</table>


<form action="#">
<div>
<label for="name">姓名</label>
<input type="text" id="name">
</div>
<div>
<label for="name">邮件</label>
<input type="email" id="email">
</div>
<div>
<label for="salary">薪资</label>
<input type="number" id="salary">
</div>
<button id="btn" type="button">添加</button>
</form>
</div>
</body>
</html>

标签:const,删除,DOM,demo,JavaScript,tr,li,超链接,document
From: https://blog.51cto.com/wujianrenn/6131108

相关文章

  • 【JavaScript】window对象_event事件对象
    1.event对象属性event对象可以获取和设置当前事件的有关信息,比如,获取发生事件的事件源对象,像键盘按下时使用的是哪个按键,鼠标事件发生时的鼠标......
  • 【JavaScript】window对象事件
    window对象-事件专用事件:onload事件:我们需要在网页文档下载完毕时执行的程序代码,需要放在onload事件处理程序中去编写。onunload事件:在网页文......
  • 【JavaScript】window对象_frames数组对象
    window对象的frames属性是一个数组,它与window对象的parent、top等对象属性,都是用于对HTML的帧标签(<frameset>或<iframe>)进行编程的javascript对......
  • 【JavaScript】DOM结构介绍和方法预览
    DOM1.DOM介绍DOM是DocumentObjectModel文档对象模型的缩写。根据W3CDOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标......
  • JavaScript 数据类型详解
    原文链接:​   ​​https://note.noxussj.top/?source=51cto​​常见的ES5数据类型分为基本数据类型、引用数据类型两种。包含字符串、数字、对象、数组、函数、布尔值......
  • grpc-gateway Demo项目
    仓库地址定义一个rcp服务&&grpc-gatewaygrpc-gatewaygvmusego1.18.1安装插件goinstall\github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway......
  • Javascript使用function创建类的两种方法
    1、使用function类1234567891011121314151617181920212223//myFunction.jsvarCMyFunc=function(){//类的公共方法,供外部调用this.Fun......
  • 前端-笔试刷题-JavaScript
    基本数据类型检测题目描述请补全JavaScript函数,要求以字符串的形式返回参数的类型。注意:只需检测基本数据类型。点击查看代码function_typeof(value){//......
  • Javascript 显示当前滚动条滚动的百分比
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>奇奇怪怪的滚动条显示</title></head><style>#progress{position:fixed;top:0;left:0;......
  • 【Java / JavaScript】AES加密解密
     Java封装的AES加密解密工具类:几个重要的参数信息-需要指定一个密钥串sKey密钥内容自定义数字+字母+特殊符号-加密方式为AES-AES下面的模式ECB-ECB下面......