I'm trying to toggle text showing when I click a button for each item I have in a Carousel.
When I use "getElementByID" it works fine, but I need to use "getElementsByClassName" because it's a repeater field in the backend and there are several buttons in the whole carousel.
Anyway here is my code -
function toggleText(){
var x = document.getElementsByClassName("figure-caption-test");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
<button class="figure-button" id="figure-button" onclick="toggleText()">
REVEAL ANSWER
</button>
<figcaption class="figure-caption-test" id="reveal-text" style="display: none;">
Text that appears
</figcaption>
And the error i'm getting is - Cannot read properties of undefined (reading 'display')
Any help is greatly appreciated, thanks
getElementsByClassName
returns array of elements.
this is my solution:
function toggleText(){
var elms = document.getElementsByClassName("figure-caption-test");
Array.from(elms).forEach((x) => {
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
})
}
<button class="figure-button" id="figure-button" onclick="toggleText()">
REVEAL ANSWER
</button>
<figcaption class="figure-caption-test" id="reveal-text" style="display: none;">
Text that appears
</figcaption>