批改状态:合格
老师批语:
// 1. 创建:const ul = document.createElement('ul')// 2. 添加document.body.append(ul)// 为ul添加一些元素for ( let i = 1; i <= 5; i++ ) {const li = document.createElement('li')li.append('item-' + i)ul.append(li)}// 3. 文档片段// 使用文档片段来优化创建过程,提升渲染效率const frag = document.createDocumentFragment()for ( let i = 1; i <= 5; i++ ) {const li = document.createElement('li')li.append('demo-' + i)frag.append(li)}// 最后再统一添加到页面中的ul里去ul.append(frag)

使用片段文档来创建过程,可以提升渲染效率
// 4. 后面插入:after// (1).先找到插入点:const three = ul.querySelector(':nth-child(3)')// (2).创建元素let li = document.createElement('li')li.append('后面插入<li>')// (3).插入到指定位置three.after(li)// 5.前面插入:before// (1).创建新元素li = document.createElement('li')li.append('前面插入Li')// (2).插入到指定位置three.before(li)

// true:深度克隆,克隆到内部所有后代元素let newLi = li.cloneNode(true)console.log(newLi)ul.append(newLi)

疑问:深度克隆能理解,但是怎么识别克隆哪个元素呢?
const last = ul.lastElementChildlet h2 = document.createElement('h2')h2.append('被替换的元素')ul.replaceChild(h2, last)

ul.replaceChildren(h2, last)

如果换成replaceChildren,会替换整个ul
// 删除当前元素// ul.removeChild(ul.querySelector(':last-child'))ul.querySelector(':last-child').remove()//两种方式都可以
<h2>Hello world</h2><div class="box"><style>h2 {color: red;}</style><h2>通知</h2><span style="display: none">试用期员工不参加</span><p>今天下午17:00开会, 开发部, 运营部全体参加~~</p></div>
console.log(document.querySelector('h2').textContent)console.log(document.querySelector('.box').textContent)

console.log(document.querySelector('h2').innerText)

console.log(document.querySelector('.box').innerHTML)console.log(document.querySelector('.box').innerHTML = '<h1>hello php</h1>')

//console.log(document.querySelector('.box').outerHTML = null)document.querySelector('.box').remove()

<input type="text" onkeydown="addCommet(this)" placeholder="请留言" autofocus /><!--oninput:按一次触发记录一次onkeydown:键盘按下才记录--><ul class="list"></ul>
function addCommet(ele) {if (event.key === 'Enter') {// 1. 非空判断if (ele.value.length === 0) {alert('没输出?')// 重置焦点ele.focus()return false} else {// 2. 添加留言const ul = document.querySelector('.list')const li = document.createElement('li')// 3. 动态添加删除功能ele.value += '<button onclick="del(this.parentNode)">删除</botton>'ul.insertAdjacentHTML('afterbegin', `<li>${ele.value}</li>`)// 4. 清空留言ele.value = null}}}// 删除函数function del(ele) {// 三元判断return confirm('Are you sure you want to delete?') ? ele.remove() : false}

/*** 流程:* 1、判断 event.key === ele.value,是回车键就提交* 2、判断提交值是否为空,用长度来判断,空就提醒,不为空就执行* 3、添加留言至新li* 4、动态添加删除功能* 5、留言添加至列表第一个,ul标签后,afterbegin* 6、添加成功后,清空留言框内容*/
<h3 style="color:red">hello php.cn</h3><div data-username="金莲" data-my-email="jl@php.cn">用户信息</div>
// 预定义属性console.log(document.querySelector('h3').style.color)// 自定义属性console.log(document.querySelector('div')['data-username']) //undefinedconsole.log(document.querySelector('div').dataset['username'])console.log(document.querySelector('div').dataset.username)console.log(document.querySelector('div').dataset['myEmail'])console.log(document.querySelector('div').dataset.myEmail)console.log(document.querySelector('div').getAttribute('data-my-email'))

// dataset对象:读取自定义属性// 自定义属性:`data-`前缀// 预定义属性/预置属性:`id, class, style, src, type, ...`
疑问:cneNode(true) ,但是怎么识别克隆哪个元素呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号