一個編輯功能所引發的一場知識探索學習之旅(JavaScript、HTML)

文章目錄

  • 一個編輯功能所引發的一場知識探索學習之旅(JavaScript、HTML)
    • 1. 一個編輯功能案例
    • 2. 知識點探索學習
    • 3. 參考資料


一個編輯功能所引發的一場知識探索學習之旅(JavaScript、HTML)

在這里插入圖片描述

1. 一個編輯功能案例

HTML:

	<div class="modal active" id="rulesModal"><div class="modal-content"><div class="modal-header"><h3>智能分類規則配置</h3><button class="close-modal" id="closeRulesModal">×</button></div><div class="modal-body"><div class="form-group"><label>添加新規則</label><div style="display: flex; gap: 15px;"><input type="text" class="form-control" id="newRuleKeyword" placeholder="關鍵詞"><select class="form-control" id="newRuleCategory"><option value="" disabled="" hidden="">--- 請選擇 ---</option><option value="IT學習">IT學習</option><option value="英語學習">英語學習</option><option value="考試備考">考試備考</option></select><button class="btn" id="addRuleBtn" style="min-width: 100px;"><i class="fas fa-plus"></i> 添加</button></div></div><div class="rules-list" id="rulesList"><div class="rule-item"><div class="rule-keyword">IT</div><div class="rule-category">IT學習</div><div class="rule-actions"><div class="rule-action edit-rule" data-index="0"><i class="fas fa-edit"></i></div><div class="rule-action delete-rule" data-index="0"><i class="fas fa-trash"></i></div></div></div><div class="rule-item"><div class="rule-keyword">英語</div><div class="rule-category">英語學習</div><div class="rule-actions"><div class="rule-action edit-rule" data-index="1"><i class="fas fa-edit"></i></div><div class="rule-action delete-rule" data-index="1"><i class="fas fa-trash"></i></div></div></div><div class="rule-item"><div class="rule-keyword">考試</div><div class="rule-category">考試備考</div><div class="rule-actions"><div class="rule-action edit-rule" data-index="2"><i class="fas fa-edit"></i></div><div class="rule-action delete-rule" data-index="2"><i class="fas fa-trash"></i></div></div></div></div></div><div class="modal-footer"><button class="btn btn-outline" id="cancelRulesBtn">取消</button><button class="btn" id="saveRulesBtn">保存規則</button></div></div></div>

JavaScript:

        let rules = [];rules.push({keyword:"IT",category:"IT學習"},{keyword:"英語",category:"英語學習"},{keyword:"考試",category:"考試備考"});// 編輯規則function editRule(index) {const rule = rules[index];const rulesList = document.getElementById('rulesList');//const editButton = rulesList.querySelector(`[data-index="${index}"]`)// 原代碼(依賴DOM層級結構)//const editButton = rulesList.querySelector(`[class~="edit-rule"][data-index="${index}"]`);//const ruleItem = editButton.parentElement.parentElement;// 優化后(結構無關更健壯)const editButton = rulesList.querySelector(`.edit-rule[data-index="${index}"]`);const ruleItem = editButton?.closest('.rule-item'); // 可選鏈操作符 ?. 防止空值報錯ruleItem.querySelector(".rule-keyword").innerHTML=`<input type="text" class="form-control" style="max-width: 80%;" value="${rule.keyword}">`ruleItem.querySelector(".rule-category").innerHTML=`<select class="form-control" style="max-width: 80%;">${document.getElementById('newRuleCategory').innerHTML}</select>`// 原代碼(查詢多次)//ruleItem.querySelector(".rule-category .form-control").querySelector(`[value="${rule.category}"]`).selected = true// 優化后(查詢一次,更簡潔)ruleItem.querySelector(".rule-category .form-control").value=rule.category; //為下拉框默認賦值//const categoryDropdown = document.getElementById('newRuleCategory').innerHTML;// 監聽事件:獲取輸入框填寫的值ruleItem.querySelector(".rule-keyword .form-control").addEventListener('input', function() {rule.keyword = this.value.trim();console.log(rule.keyword);//rules.splice(index, 1, {keyword:rule.keyword,category:rule.category});});// 監聽事件:獲取下拉框選中的值ruleItem.querySelector(".rule-category .form-control").addEventListener('change', function() {rule.category = this.value;console.log(rule.category);//rules.splice(index, 1, {keyword:rule.keyword,category:rule.category});});	}

2. 知識點探索學習


知識補充:

closest 函數的用法示例:


在這里插入圖片描述


本文涉及知識點:

  1. 在 JavaScript 中,使用反引號(`)來創建模板字符串。有了模板字面量,就可以通過使用占位符 ${expression} 嵌入待替換的表達式,從而避免串聯運算符,并提高代碼的可讀性。
  2. querySelector 函數的使用。
  3. closest 函數的使用
  4. 可選鏈操作符 ?. 防止空值報錯
  5. 為輸入框、下拉框賦默認值。
  6. 監聽事件:獲取輸入框填寫的值、獲取下拉框選中的值。

3. 參考資料

  • 模板字符串 - JavaScript | MDN
  • Element.querySelector() - Web API | MDN
  • jQuery closest() 方法 | 菜鳥教程
  • Element.closest() - Web API | MDN
  • 可選鏈運算符(?.) - JavaScript | MDN

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88410.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88410.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88410.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kali制作Windows木馬

環境描述&#xff1a;攻擊機&#xff1a;Kali-2025實驗靶機&#xff1a;Windows11不要攻擊他人&#xff0c;這只是網絡安全實驗還是一樣獲取IP地址制作好之后開服務&#xff0c;上傳下載在靶機右鍵保留下載記得把防火墻&#xff0c;安全中心關了否則無法下載之后就可以kali控制…

從零實現一個GPT 【React + Express】--- 【1】初始化前后端項目,實現模型接入+SSE

摘要 本系列文章主要是實現一個能夠對話以及具有文生圖等功能的模型應用。主要UI界面會參考chat-gpt,豆包等系列應用。模型使用的是gpt開源的大模型。 如果你是一個前端開發工程師需要一個自己的開源項目&#xff0c;可以學習這個系列的文章&#xff0c;不需要有很完整的后端…

【PTA數據結構 | C語言版】在順序表 list 的第 i 個位置上插入元素 x

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 請編寫程序&#xff0c;將 n 個整數存入順序表&#xff0c;對任一給定整數 x&#xff0c;將其插入順序表中指定的第 i 個位置。注意&#xff1a;i 代表位序&#xff0c;從 1 開始&#xff0c;不是數…

汽車智能化2.0引爆「萬億蛋糕」,誰在改寫游戲規則?

進入2025年&#xff0c;長安、奇瑞、比亞迪等各大主機廠紛紛將智能化推進至全新高度&#xff0c;中國汽車智能化競爭進入了“技術市場生態”綜合較量階段。一方面&#xff0c;各大主機廠全力推進輔助駕駛的規模化普及&#xff0c;掀起了一場關于高階輔助駕駛的“技術平權”革命…

QT 第八講 --- 控件篇 Widget(三)界面系列

前言&#xff1a; 在上一講《QT 第七講 --- 控件篇 &#xff08;二&#xff09;window系列與qrc機制》中&#xff0c;我們探討了應用程序窗口&#xff08;QMainWindow, QWidget&#xff09;的基礎結構、窗口標志、狀態以及Qt強大的資源管理機制&#xff08;.qrc文件&#xff0…

廣州華銳互動:AR 領域的創新與服務先鋒?

&#xff08;一&#xff09;定制化服務? 廣州華銳互動秉持 “以客戶為中心” 理念&#xff0c;為客戶提供高度定制化 AR 解決方案。項目初期&#xff0c;通過多種方式深入了解客戶需求&#xff0c;挖掘痛點。基于需求分析&#xff0c;技術團隊運用自主研發技術和先進算法&…

暑假算法日記第一天

目標?&#xff1a;刷完靈神專題訓練算法題單 階段目標&#x1f4cc;&#xff1a;【算法題單】滑動窗口與雙指針 LeetCode題目:1456. 定長子串中元音的最大數目643. 子數組最大平均數 I1343. 大小為 K 且平均值大于等于閾值的子數組數目2090. 半徑為 k 的子數組平均值2379. 得…

【軟考高項】信息系統項目管理師-第1章 信息化發展(1.5 數字化轉型與元宇宙、1.6 標題類知識點、1.7 十四五規劃內容匯總)

文章大綱 第1章 信息化發展1.5 數字化轉型與元宇宙1.5.1 數字化轉型1.5.2 元宇宙1.6 標題類知識點1.7 十四五規劃內容匯總1.8 10道試題第1章 信息化發展 學習建議: 此章內容大部分為新增內容,基本是全新的章節2023年5月考試2分選擇,5分案例2023年下半年各批次選擇題2分左右1.…

STM32F103C8T6單片機內部執行原理及啟動流程詳解

引言&#xff1a;為什么深入理解STM32啟動流程很重要&#xff1f;STM32F103C8T6作為嵌入式開發中最常用的單片機之一&#xff0c;其內部執行原理和啟動流程是理解嵌入式系統底層運行機制的核心。無論是開發Bootloader、調試HardFault異常&#xff0c;還是優化系統啟動速度&…

【python 常用的數學科學/計算機視覺等工具】

當然有&#xff01;在科學計算、機器學習、圖像處理等領域&#xff0c;scikit-learn、scikit-image&#xff08;skimage&#xff09;、SciPy、OpenCV 是非常重要的庫&#xff0c;但它們不是唯一的。以下是一些與它們類似或互補的項目&#xff0c;按照用途分類列出&#xff1a; …

LUMP+NFS架構的Discuz論壇部署

一、配置準備 每臺主機都安裝mysql、nfs、php、mysql 對每臺主機都進行關閉防火墻、上下文等&#xff0c;減少阻礙[rooteveryone ~]# systemctl stop firewalld [rooteveryone ~]# setenforce 0安裝插件等[rootlocalhost mysql]# yum install -y nfs-utils nginx [rootlocalho…

C++STL-deque

一.基礎概念deque和vector一樣都是對元素的操作&#xff0c;不同點&#xff1a;vector對元素增刪后元素會往前或往后移&#xff0c;如果數據不大沒有太多影響&#xff0c;如果數據很大效率會變低&#xff1b;deque對元素增刪不會使元素位置改變&#xff0c;所有效率會變高。二.…

字節跳動高質量聲音克龍文字轉語音合成軟件MegaTTS3整合包

MegaTTS3是抖音團隊聯合國內其他大學研發的一款語音合成及聲音克龍應用&#xff0c;可實現零樣本語音克龍及富有情感的自然語音合成。我基于當前最新版制作了免安裝一鍵啟動整合包。 MegaTTS3介紹 MegaTTS 3 是字節跳動&#xff08;ByteDance&#xff09;與浙江大學聯合開發的…

RPC:遠程過程調用機制

目錄 1、概念 2、RPC架構 2.1 RPC的四個核心組件 2.2 訪問流程 3、關鍵概念 3.1 接口定義語言 (IDL - Interface Definition Language) 3.2 序列化與反序列化 (Serialization & Deserialization - Marshalling/Unmarshalling) 3.3 網絡傳輸 (Transport) 3.4 服務發…

EPLAN 電氣制圖(六):電機正反轉副勾主電路繪制

一、項目背景&#xff1a;為什么繪制電機正反轉主電路&#xff1f; 在多功能天車系統中&#xff0c;電機正反轉控制是核心功能之一。通過 EPLAN 繪制主電路&#xff0c;不僅能清晰展示電源分配、換相邏輯和線纜連接&#xff0c;還能為后續 PLC 控制設計奠定基礎。本次以西門子設…

JAVA JVM對象的實現

jvm分配內存給對象的方式1. 內存分配的總體流程對象內存分配的主要步驟&#xff1a;類加載檢查&#xff1a;確認類已加載、解析和初始化。內存分配&#xff1a;根據對象大小&#xff0c;從堆中劃分內存空間。內存初始化&#xff1a;將分配的內存空間初始化為零值&#xff08;不…

CVE-2023-41990/CVE-2023-32434/CVE-2023-38606/CVE-2023-32435

CVE-2023-41990&#xff08;GitLab 命令注入漏洞&#xff09;漏洞原理CVE-2023-41990是GitLab CE/EE&#xff08;社區版/企業版&#xff09;中項目導出功能的一個命令注入漏洞。具體原理如下&#xff1a;①GitLab在導出項目時&#xff0c;會調用git命令生成項目存檔&#xff08…

RAG實戰指南 Day 8:PDF、Word和HTML文檔解析實戰

【RAG實戰指南 Day 8】PDF、Word和HTML文檔解析實戰 開篇 歡迎來到"RAG實戰指南"系列的第8天&#xff01;今天我們將深入探討PDF、Word和HTML文檔解析技術&#xff0c;這是構建企業級RAG系統的關鍵基礎。在實際業務場景中&#xff0c;80%以上的知識都以這些文檔格式…

【AXI】讀重排序深度

我們以DDR4存儲控制器為例&#xff0c;設計一個讀重排序深度為3的具體場景&#xff0c;展示從設備如何利用3級隊列優化訪問效率&#xff1a;基礎設定從設備類型&#xff1a;DDR4存儲控制器&#xff08;支持4個存儲體Bank0-Bank3&#xff09;讀重排序深度&#xff1a;3&#xff…

牛馬逃離北京(回歸草原計劃)

豐寧壩上草原自駕游攻略&#xff08;半虎線深度版&#xff09; &#x1f697; 路線&#xff1a;北京/承德 → 豐寧縣城 → 半虎線 → 大灘鎮&#xff08;2天1夜&#xff09; &#x1f3af; 核心玩法&#xff1a;免費草原、高山牧場、日落晚霞、牧群互動、星空煙花&#x1f33f;…