当前位置:网站首页>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>
边栏推荐
- Matlab基础(5)——符号运算
- LeetCode_236_Last Common Ancestor of a Binary Tree
- 【ASP.NET Core】选项类的依赖注入
- Difference between C# enumeration type and xaml
- Farmers on the assembly line: I grow vegetables in a factory
- 基于时延估计的扰动卡尔曼滤波器外力估计
- LeetCode_235_二叉搜索树的最近公共祖先
- CMake库搜索函数居然不搜索LD_LIBRARY_PATH
- 英 文 换 行
- Verilog grammar basics HDL Bits training 07
猜你喜欢
随机推荐
京东二面痛遭中间件虐杀,30天学透这套中间件小册,挺进阿里
概率论的学习整理--番外2:和二项式,组合相关的杨辉三角
Concepts of cloud-native applications and 15 characteristics of cloud-native applications
Apifox generates interface documentation tutorial and operation steps
基于多目标两阶段随机规划方法的电热联合系统调度
什么是驱动程序签名,驱动程序如何获取数字签名?
PyQt5快速开发与实战 8.2 绘图 && 8.3 QSS的UI美化
CMake库搜索函数居然不搜索LD_LIBRARY_PATH
程序环境和预处理(详解)
解码Redis最易被忽视的CPU和内存占用高问题
AlphaFold预测了几乎所有已知蛋白质!涵盖100万物种2.14亿结构,数据集开放免费用...
英 文 换 行
牛客-TOP101-BM42
Flexible distribution parameters of mechanical system modeling and control of research and development
LeetCode_236_二叉树的最近公共祖先
ADC0808/9 signal acquisition developed by single chip microcomputer
JD.com was brutally killed by middleware on two sides. After 30 days of learning this middleware booklet, it advanced to Ali.
周鸿祎:微软抄袭了360安全模式 所以成为美国最大的安全公司
[BJDCTF2020]Cookie is so stable-1|SSTI injection
unity对象池(学习)









