当前位置:网站首页>DOM常用方法以及项目
DOM常用方法以及项目
2022-07-30 12:00:00 【今天不学习,明天变腊鸡】
1.DOM方法
<script> // 目标1: // 1.创建列表(createElement() appen() cloneNode(true)) // 2.在第三个元素前后插入列表(.after .before) let ul = document.createElement('ul'); for(let i = 0 ; i < 5 ; i++) {
let li = document.createElement('li'); li.append('item' + i); ul.append(li); } document.body.append(ul); let three = document.querySelector('ul'); three = [...three.children]; let li = document.createElement('li') li.append('xxx'); let NewClone = li.cloneNode(true); three[3].before(NewClone); NewClone = li.cloneNode(true); three[3].after(NewClone); ul.style.border = '2px solid red'; // 目标2: // 1.在ul前后插入元素 let h = document.createElement('h3'); h.append('123'); ul.insertAdjacentElement('afterBegin',h); ul.insertAdjacentHTML('beforeBegin','<li>1</li>'); ul.insertAdjacentHTML('afterEnd','<li>2</li>'); ul.insertAdjacentHTML('beforeEnd','<li>3</li>'); // 目标3: // 1.替换第一个元素 // 1.删除最后一个元素 let a = document.createElement('a'); a.href = 'www.baidu.com'; a.append('百度'); ul.replaceChild(a,ul.firstElementChild); ul.lastElementChild.remove(); </script>
总结:
总结:
1.创建元素:
1.document.createElement:在整个页面创建元素
2.append():添加Element或者text【添加属性:【Element.属性】】,可以添加多个元素
2.插入元素:
1.(Element).after(Element) .before
2.(Element).cloneNode(true)
3.insertAdjacentElement(‘插入位置’, 元素)
插入位置有四个
afterBegin: 开始标签之后,第一个子元素
beforeBegin: 开始标签之前,是它的前一个兄弟元素
afterEnd: 结束标签之后,它的下一个兄弟元素
beforeEnd: 结束标签之前,它的最后一个子元素
4.insertAdjacentHTM(‘插入位置’, HTML);
3.替换:
[父Element].replaceChild(‘替换的Element’,‘位置);
4.删除:
[Element].remove();
2.JS操作类容
<!-- 属性和函数不同 -->
<!-- 目标1: 创建元素: <div class="box"> <style> h2 { color: red; } </style> <h2>通知</h2> <span style="display: none">试用期员工不参加</span> <p>今天下午17:00开会, 开发部, 运营部全体参加~~</p> </div> -->
<script>
let div = document.createElement('div');
div.class = 'box';
let h2 = document.createElement('h2');
h2.append('通知');
let span = document.createElement('span');
span.append('试用期员工不参加');
let p = document.createElement('p');
p.append('今天下午17:00开会, 开发部, 运营部全体参加~~');
span.style = 'display: none';
h2.color = 'red';
div.append(h2,span,p);
let x = document.body;
x.append(div);
// 目标2:
// 1. textContent
// 2. innerText
// 3. innerHTML
// 4. outerHTML
// 输出找区别
console.log(div.textContent);
console.log(div.innerText);
console.log(div.innerHTML);
console.log(div.outerHTML);
总结:
textContent:所有文本类容,包括隐藏了的
innerText:你在浏览器所看到的类容
innerHTML:内HTML,及不包括外壳
outerHTML:包括外壳
留言板项目
<!DOCTYPE html>
<html lang="zh-CN">
<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>toDoList:留言板</title>
</head>
<body>
<!-- onkeydown: 当某个键按下时触发事件 -->
<input type="text" onkeydown="addMsg(this)" placeholder="请输入留言" autofocus />
<ul class="list"></ul>
<script> function addMsg(ele) {
// console.log(ele); // 事件方法中有一个对象,表示当前事件: event // console.log(event); // console.log(event.type); // console.log(event.key); // 判断用户是否提交了留言,通过是否按下了回车键 if (event.key === 'Enter') {
// 1. 留言非空验证 if (ele.value.length === 0) {
alert('留言不能为空'); // 重置焦点到输入框中 ele.focus(); return false; } // 2. 添加留言 // console.log(ele.value); // const li = document.createElement('li'); // li.append(ele.value); // document.querySelector('.list').append(li); const ul = document.querySelector('.list'); // if (ul.firstElementChild !== null) {
// ul.firstElementChild.before(li); // } else {
// ul.append(li); // } // ul.insertAdjacentElement('afterbegin', li); // 为每条留言添加删除功能 ele.value = ele.value + '<button οnclick="del(this.parentNode)">删除</button>'; ul.insertAdjacentHTML('afterbegin', `<li>${
ele.value}</li>`); // 3. 清空输入框 ele.value = null; } } // 删除功能 function del(ele) {
// console.log(ele); // if (confirm('是否删除?')) {
// ele.remove(); // } return confirm('是否删除?') ? ele.remove() : false; // 第二种方式: outerHTML -> remove() // return confirm('是否删除?') ? (ele.outerHTML = null) : false; } </script>
</body>
</html>
边栏推荐
- Difference between C# enumeration type and xaml
- ADC0808/9 signal acquisition developed by single chip microcomputer
- 横向对比5种常用的注册中心,无论是用于面试还是技术选型,都非常有帮助
- Microsoft SQL server hacked, bandwidth stolen
- 2022-07-29 顾宇佳 学习笔记 异常处理
- ECCV 2022 | 新加坡国立大学提出:全新可恢复型模型遗忘框架LIRF!
- 概率论的学习和整理7:理解期望和方差还是要回到随机试验本身,期望不是平均值,方差的公式不同情况不同
- Apifox 生成接口文档 教程与操作步骤
- 什么是驱动程序签名,驱动程序如何获取数字签名?
- PanGu-Coder: Function-level code generation model
猜你喜欢

程序环境和预处理(详解)

Program environment and preprocessing (detailed)

Difference between C# enumeration type and xaml

云原生应用的概念和云原生应用的 15 个特征

A tutorial on how to build a php environment under win

概率论的学习整理--番外2:和二项式,组合相关的杨辉三角

Horizontal comparison of 5 commonly used registration centers, whether it is used for interviews or technical selection, is very helpful

Reverse linked list - iterative inversion method

IO/多路复用(select/poll/epoll)

What happened when the computer crashed?
随机推荐
我又造了个轮子:GrpcGateway
[SCTF2019]Flag Shop
A tutorial on how to build a php environment under win
备战金九银十!2022面试必刷大厂架构面试真题汇总+阿里七面面经+架构师简历模板分享
北上广线下活动丨年底最不可错过的技术聚会都齐了
维护数千规模MySQL实例,数据库灾备体系构建指南
New:WebKitX ActiveX :::Crack
Verilog语法基础HDL Bits训练 08
概率论的学习和整理7:理解期望和方差还是要回到随机试验本身,期望不是平均值,方差的公式不同情况不同
概率论的学习整理--番外1:可重复且无次序的计数公式C(n+k-1,k) 的例题 : 同时丢3个骰子,会有多少种情况?答案不是216而是56!
解码Redis最易被忽视的CPU和内存占用高问题
Verilog grammar basics HDL Bits training 07
LCD1602 display experiment developed by single chip microcomputer
Get the original data API on 1688app
Testability of Fuzzy Discrete Event Systems
IO/multiplexing (select/poll/epoll)
Niuke-TOP101-BM42
爱可可AI前沿推介(7.30)
和数集团:让智慧城市更智慧,让现实生活更美好
Matlab绘图(1)——二维绘图