簡體   English   中英

如何 select 和切換 javascript 中 div 內的元素

[英]How to select and toggle element inside the div in javascript

我需要在 div 元素內切換一個圖標。 對我來說,主要問題是每次用戶點擊 div 而不是圖標時都會發生切換。

HTML

<div class="faq__questions-question" ><span>Lorem ipsum?</span><i class="fas fa-minus"></i></div>

我一直在嘗試做的是在圖標或 div 中添加onclick事件,但它僅適用於自身。 <i onclick="myFunction(this)" class="fas fa-minus"></i>

那么我的 javascript 是

function myFunction(x) {
  x.classList.toggle("fa-plus");
}

在單擊整個 div 時,我怎樣才能 select 只有一個圖標 class ? 我想我需要在 div 上使用 onclick 事件:

<div onclick"myFunction()" class="faq__questions-question" ><span>Lorem ipsum?</span><i class="fas fa-minus"></i></div>

但是我應該如何處理我的 javascript 代碼?

我希望這是你想要的。

 document.querySelector('.faq__questions-question').addEventListener('click', e => { const icon = e.currentTarget.querySelector('.fas'); icon.classList.toggle('fa-minus'); })
 .faq__questions-question { border: 1px solid black; }.fa-minus { color: red; }
 <div class="faq__questions-question"> <span>Lorem ipsum?</span> <i class="fas fa-minus">hi</i> </div>

如果可能,最好使用 CSS: https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes#user_action_pseudo-classes

但是,如果在您的情況下不可能並且想要使用 JS,請使用element.addEventListener('click', function)而不是onclick ,為此您首先需要 select DOM中的元素:

let selectedElement = document.querySelector('.fas');
selectedElement.addEventListener('click', function(){
  selectedElement.classList.toggle('fa-plus');
});

您可以 select 一個不同的元素或整個 DIV,具體取決於您想要可點擊的區域,然后對您想要更改 class 的元素進行另一個選擇。

let clickableElement = document.querySelector('.classClickableElement');
clickableElement.addEventListener('click', function(){
  let targetElement = document.querySelector('.classTargetElement');
  targetElement.classList.toggle('toggleClass');
});

您也可以在此處閱讀有關 querySelector 的信息: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector

獲取子元素(省略標簽之間的空格)

HTML:

<div class="faq__questions-question" ><span>Lorem ipsum?</span><i class="fas fa-minus"></i></div>

JavaScript:

let c = document.getElementsByClassName("faq__questions-question")
for(let x of c) {
   x.addEventListener('click', function() {
      x.childNodes[1].classList.toggle('fa-minus')
   })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM