无法读取未定义的属性(读取 'display')
Cannot read properties of undefined (reading 'display')
我正在尝试切换当我点击轮播中每个项目的按钮时显示的文本。
当我使用“getElementByID”时它工作正常,但我需要使用“getElementsByClassName”,因为它是后端的转发器字段并且整个轮播中有几个按钮。
无论如何这是我的代码 -
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>
我得到的错误是 -
无法读取未定义的属性(读取 'display')
非常感谢任何帮助,谢谢
“getElementsByClassName”returns 类似数组的对象,而不是单个对象。
您可以使用 forEach 遍历对象:
Array.prototype.forEach.call(x, function(element) {
if (element.style.display === "none") {
element.style.display = "block";
} else {
element.style.display = "none";
}
}
);
您可以在此处找到更多相关信息:https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName
我认为缺少一个 for 循环和一个计数变量。
您的代码应如下所示:
var x = document.getElementsByClassName("figure-caption-test");
var i;
for (i=0; i < x.length; i++) {
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
getElementsByClassName
returns 元素数组。
这是我的解决方案:
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>
我正在尝试切换当我点击轮播中每个项目的按钮时显示的文本。
当我使用“getElementByID”时它工作正常,但我需要使用“getElementsByClassName”,因为它是后端的转发器字段并且整个轮播中有几个按钮。
无论如何这是我的代码 -
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>
我得到的错误是 - 无法读取未定义的属性(读取 'display')
非常感谢任何帮助,谢谢
“getElementsByClassName”returns 类似数组的对象,而不是单个对象。
您可以使用 forEach 遍历对象:
Array.prototype.forEach.call(x, function(element) {
if (element.style.display === "none") {
element.style.display = "block";
} else {
element.style.display = "none";
}
}
);
您可以在此处找到更多相关信息:https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName
我认为缺少一个 for 循环和一个计数变量。
您的代码应如下所示:
var x = document.getElementsByClassName("figure-caption-test");
var i;
for (i=0; i < x.length; i++) {
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
getElementsByClassName
returns 元素数组。
这是我的解决方案:
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>