亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 48
粉絲 3
評論 1
訪問量 44985
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
Dom常用增刪改操作及留言板案例
吳長清
原創(chuàng)
621人瀏覽過

dom常用增刪改操作及留言板案例

1.常用增刪改操作的 API

API 描述
createElement(ele) 創(chuàng)建新元素, document上調(diào)用
append(string/ele) 追加到父級最后子節(jié)點后,在父節(jié)點上調(diào)用
before(string/ele) 在當(dāng)前元素之前插入節(jié)點, 在當(dāng)前元素上調(diào)用
after(string/ele) 在當(dāng)前元素之后插入節(jié)點, 在當(dāng)前元素上調(diào)用
cloneNode(true) 克隆節(jié)點(true:當(dāng)前節(jié)點所有子節(jié)點),在要被克隆的節(jié)點上調(diào)用
replaceChild(ele,pos) 替換子元素,在父級節(jié)點上調(diào)用
remove(ele) 移除子元素, 在當(dāng)前節(jié)點上調(diào)用

代碼塊:

  1. <!-- 1. 實例演示dom增刪改的常用方法 -->
  2. <script>
  3. // 1. 創(chuàng)建元素 在document上調(diào)用
  4. // 創(chuàng)建一個ul 創(chuàng)建號的ul在內(nèi)存中 沒有渲染到html頁面中
  5. const ul = document.createElement("ul");
  6. // 2.追加元素 在追加的元素的父節(jié)點上調(diào)用
  7. // 此時追加ul元素 就應(yīng)該在它的父級元素上調(diào)用
  8. document.body.append(ul);
  9. // 在ul下面追加子元素li;
  10. for (let index = 0; index < 5; index++) {
  11. const li = document.createElement("li");
  12. // append() 可以追加元素外還可以追加文本內(nèi)容
  13. li.append("item-" + (index + 1));
  14. ul.append(li);
  15. }
  16. // 3.在當(dāng)前元素之前插入元素
  17. // 3.1 創(chuàng)建要插入的元素
  18. let li = document.createElement("li");
  19. // 3.2 追加文本內(nèi)容
  20. li.append("新元素");
  21. // 3.3 設(shè)置css樣式
  22. li.style.color = "red";
  23. // 3.4 插入:當(dāng)前節(jié)點.before(新節(jié)點)
  24. const item3 = ul.querySelector("li:nth-of-type(3)");
  25. item3.before(li);
  26. // 4.克隆 參數(shù)為true時 表示克隆當(dāng)前元素下的所有子元素 含文本內(nèi)容
  27. li = li.cloneNode(true);
  28. // 5.在當(dāng)前元素之后插入元素
  29. item3.after(li);
  30. // 6.替換子元素 在父節(jié)點上調(diào)用 當(dāng)前元素.replaceChild(新元素,舊元素)
  31. // 6.1 創(chuàng)建新元素 新值
  32. const newNode = document.createElement("li");
  33. newNode.append("我是替換最后一個li的新元素");
  34. newNode.style.backgroundColor = "cyan";
  35. // 6.2 找到需要被替換的值 最后一個li
  36. const targetNode = document.querySelector("li:last-of-type");
  37. // 6.3 替換
  38. ul.replaceChild(newNode, targetNode);
  39. // 7.移除/刪除 在當(dāng)前節(jié)點調(diào)用 誰調(diào)刪誰
  40. ul.firstElementChild.remove();
  41. </script>

效果:

insertAdjacentElement('插入位置', 元素)

插入位置 描述
beforeBegin 開始標(biāo)簽之前,是它的前一個兄弟元素
afterBegin 開始標(biāo)簽之后,第一個子元素
beforeEnd 結(jié)束標(biāo)簽之前,它的最后一個子元素
afterEnd 結(jié)束標(biāo)簽之后,它的下一個兄弟元素

代碼塊:

  1. <body>
  2. <ul>
  3. <li>商品1</li>
  4. <li>商品2</li>
  5. <li>商品3</li>
  6. <li>商品4</li>
  7. </ul>
  8. <style>
  9. ul {
  10. border: 1px solid red;
  11. }
  12. </style>
  13. </body>
  1. <script>
  2. // insertAdjacentElement(參數(shù)1,參數(shù)2)
  3. // 參數(shù)1:插入位置 有四個
  4. // 參數(shù)2:需要插入的元素 支持標(biāo)簽語義化 能識別html標(biāo)簽
  5. // 獲取當(dāng)前ul元素
  6. const ul = document.querySelector("ul");
  7. // 在當(dāng)前列表的前面插入一個標(biāo)題
  8. const h3 = document.createElement("h3");
  9. h3.append("商品列表");
  10. // 在ul開始標(biāo)簽之前插入 插入之后是其兄弟元素 同級
  11. ul.insertAdjacentElement("beforebegin", h3);
  12. // 在ul開始標(biāo)簽之后插入 插入之后是其第一個子元素 子集
  13. ul.insertAdjacentHTML("afterbegin", '<li style="color:red">第一個元素</li>');
  14. // 在ul結(jié)束標(biāo)簽之前插入 插入之后是其最后一個子元素 子集
  15. ul.insertAdjacentHTML("beforeend", '<li style="color:blue">最后一個元素</li>');
  16. // 在ul結(jié)束標(biāo)簽之后插入 插入之后是其兄弟元素 同級
  17. ul.insertAdjacentHTML("afterend", "<h4>共計: 6個</h4>");
  18. </script>

效果:

2.js操作元素內(nèi)容

屬性 描述
textContent 返回所有文本內(nèi)容,不包含html標(biāo)簽
innerText 返回正常文本,隱藏的文本不輸出
innerHTML 返回所有內(nèi)容,包含html標(biāo)簽,在輸出時html會被正常渲染到文檔中
outerHTML 返回字符串,將所有內(nèi)容包含html標(biāo)簽轉(zhuǎn)為字符串,用于存儲一些動態(tài)html樣式到服務(wù)器中

3.自定義屬性對象dataset

1.聲明方式:以data-為前綴,后面跟上具體的變量名稱,如data-name
2.使用方式:ele.dataset.name ele是設(shè)置自定義屬性的節(jié)點元素
3.特例:在聲明時除了前綴的標(biāo)識符-以外,有第二個標(biāo)識符-,那么使用時可通過駝峰式命名獲取自定義屬性的值,例如:聲明:data-app-name 使用:data-appName

4.案例-留言板

css代碼

  1. * {
  2. padding: 0;
  3. margin: 0;
  4. outline: none;
  5. }
  6. li {
  7. list-style: none;
  8. padding: 0 10px;
  9. }
  10. body header {
  11. background-color: antiquewhite;
  12. width: 100%;
  13. height: 50px;
  14. }
  15. body header h3 {
  16. text-align: center;
  17. line-height: 50px;
  18. }
  19. body main {
  20. background-color: lavenderblush;
  21. width: 100%;
  22. height: 500px;
  23. display: grid;
  24. place-items: start center;
  25. }
  26. body main input {
  27. width: 80%;
  28. height: 30px;
  29. margin-top: 10px;
  30. }
  31. body main ul {
  32. width: 80%;
  33. height: 440px;
  34. background-color: white;
  35. box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.404);
  36. }
  37. body main ul li {
  38. display: grid;
  39. grid-template-columns: 10% 80% 10%;
  40. margin-top: 5px;
  41. gap: 0 5px;
  42. }
  43. body main ul li p {
  44. font-size: 14px;
  45. color: #353434;
  46. place-self: center start;
  47. }
  48. body main ul li button {
  49. cursor: pointer;
  50. border: none;
  51. background-color: lightpink;
  52. }
  53. body main ul li button:hover {
  54. background-color: red;
  55. color: white;
  56. }
  57. body main ul li img {
  58. width: 30px;
  59. height: 30px;
  60. border-radius: 30px;
  61. border: 1px solid lightcoral;
  62. place-self: center end;
  63. }

html代碼

  1. <header>
  2. <h3>留言板</h3>
  3. </header>
  4. <main>
  5. <!-- onkeydown 鍵盤事件 -->
  6. <input type="text" onkeydown="addMsg(this)" placeholder="請輸入留言" autofocus />
  7. <ul class="list"></ul>
  8. </main>

js代碼

  1. function addMsg(ele) {
  2. // 事件方法中有一個對象,表示當(dāng)前事件: event
  3. // 判斷用戶是否提交了留言,通過是否按下了回車鍵
  4. if (event.key === "Enter") {
  5. // 留言非空驗證
  6. if (ele.value.length === 0) {
  7. alert("留言不能為空");
  8. // 重置焦點到輸入框中
  9. ele.focus();
  10. return false;
  11. }
  12. // 2. 添加留言
  13. ul = document.querySelector(".list");
  14. // 為每條留言添加刪除功能
  15. // 創(chuàng)建img元素 且路徑隨機(jī)生成
  16. const img = `<img style='' src='images/${Math.round(Math.random() * 4)}.png'/>`;
  17. // 創(chuàng)建button 并添加單擊事件來實現(xiàn)刪除功能 傳入?yún)?shù)是當(dāng)前節(jié)點的父節(jié)點 刪除的是整個li
  18. const btn = "<button onclick='del(this.parentNode)'>刪除</button>";
  19. // 字符串拼接
  20. ele.value = img + `<p>${ele.value}</p>` + btn;
  21. // insertAdjacentHTML 能識別字符串中的html標(biāo)簽
  22. ul.insertAdjacentHTML("afterbegin", `<li>${ele.value}</li>`);
  23. // 3. 清空輸入框
  24. ele.value = null;
  25. }
  26. }
  27. // 刪除功能
  28. del = (ele) => (confirm("是否刪除?") ? ele.remove() : false);

效果預(yù)覽

批改老師:PHPzPHPz

批改狀態(tài):合格

老師批語:
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費學(xué)