亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

QuerySelectorAll 使用 OOP 返回空節點列表

QuerySelectorAll 使用 OOP 返回空節點列表

慕姐8265434 2023-06-29 21:03:10
我正在重建一個待辦事項列表應用程序,并嘗試使用面向對象編程,這對我來說是新的。我已經構建了任務部分,但我無法找到&ldquo;刪除&rdquo;按鈕。添加新任務時,右側會顯示一個很棒的字體圖標。我正在嘗試選擇它們,但每次函數運行時我都會得到一個空的節點列表:Codepen:待辦事項列表重現:添加任務,然后檢查控制臺。您將看到一個空的節點列表。我嘗試過的:現在,我正在嘗試簡化console.log該元素。console.log(buttons)每次該方法運行時我都會運行addTask()。這是完整的 JS:const submit = document.querySelector("#commit-task"),? results = document.querySelector("#task-results"),? input = document.querySelector("#input-task"),? buttons = document.querySelectorAll(".fa-times");? // These are what I'm trying to selectclass Task {? constructor(task) {? ? this.taskText = task;? }? addTask() {? ? const text = input.value;? ? ui.clearInput();? ? const taskBody = `<div class="task">? ? ? ? <span>${text}</span>? ? ? ? ? ? <span>? ? ? ? ? ? ? <i class="fas fa-check" style="color: green;"></i>? ? ? ? ? ? ? <i class="fas fa-times" style="color: red;"></I> //This is the element I'm trying to select? ? ? ? ? ? </span>? ? </div>`;? ? results.innerHTML += taskBody;? ? console.log(buttons); //Here's where the Console.log statement is run? }}class UI {? clearInput() {? ? input.value = "";? ? input.focus();? }}const newTask = new Task();const ui = new UI();// Add Event Listeners:submit.addEventListener("click", () => {? newTask.addTask(); //Here is when addTask() is run.});input.addEventListener("keyup", (e) => {? if (e.keyCode === 13) {? ? newTask.addTask();? }});為什么 JavaScript 認為這些按鈕不在 DOM 中?提前致謝。
查看完整描述

1 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

document.querySelectorAll(".fa-times");在第一次分配期間執行,并且由于初始化期間沒有圖標,所以按鈕相當于一個空的 NodeList。


為了檢查當前狀態,您需要重新運行查詢。


只需將按鈕聲明為let buttons = document.querySelectorAll(".fa-times");


然后重新運行查詢并將其最新結果分配給按鈕變量,然后再記錄它:


buttons = document.querySelectorAll(".fa-times");

console.log(buttons);


查看完整回答
反對 回復 2023-06-29
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號