簡體   English   中英

如何使用 Vanilla JS 切換多個 html 文本元素?

[英]How to toggle multiple html text elements using Vanilla JS?

我正在嘗試使用最有效的方法在多個元素上切換 innerHTML。 我仍在學習並且在這一點上陷入困境

 var button = document.querySelectorAll(".title"); for (i=0; i < button.length; i++) { button[i].addEventListener('click', textToggle) } function textToggle() { if (button.getAttribute("data-text-swap") == button.innerHTML) { button.innerHTML = button.getAttribute("data-text-original"); } else { button.setAttribute("data-text-original", button.innerHTML); button.innerHTML = button.getAttribute("data-text-swap"); } }
 <details> <summary class="title" data-text-swap="Hide text"> Show text </summary> <p>text</p> </details> <details> <summary class="title" data-text-swap="Hide text"> Show text </summary> <p>text</p> </details>

你快到了。 您只需要對e.target元素進行操作,它是與click事件關聯的元素,而不是作為元素列表的button變量。

 var button = document.querySelectorAll(".title"); for (i=0; i < button.length; i++) { button[i].addEventListener('click', textToggle) } function textToggle(e) { const el = e.target; if (el.getAttribute("data-text-swap") == el.innerHTML) { el.innerHTML = el.getAttribute("data-text-original"); } else { el.setAttribute("data-text-original", el.innerHTML); el.innerHTML = el.getAttribute("data-text-swap"); } }
 <details> <summary class="title" data-text-swap="Hide text"> Show text </summary> <p>text</p> </details> <details> <summary class="title" data-text-swap="Hide text"> Show text </summary> <p>text</p> </details>

您指的button不是元素而是數組。 可以通過關鍵字this引用回調中點擊的按鈕

 var button = document.querySelectorAll(".title"); for (i=0; i < button.length; i++) { button[i].addEventListener('click', textToggle) } function textToggle() { if (this.getAttribute("data-text-swap") == this.innerHTML) { this.innerHTML = this.getAttribute("data-text-original"); } else { this.setAttribute("data-text-original", this.innerHTML); this.innerHTML = this.getAttribute("data-text-swap"); } }
 <details> <summary class="title" data-text-swap="Hide text"> Show text </summary> <p>text</p> </details> <details> <summary class="title" data-text-swap="Hide text"> Show text </summary> <p>text</p> </details>

暫無
暫無

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

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