这里的Javascript新手。 This is basically what I'm working with.
下面的函数用于隐藏newsDisplay
类中包含的所有内容,但单击调用它的按钮时没有任何反应。
function showHide() {
var x = document.getElementsByClassName('newsDisplay');
if (x.style.display === 'none') {
x.style.display = 'block';
} else {
x.style.display = 'none';
}
}

.newsDisplay {
display: block;
}

<h1>News<button onclick="showHide();"><img src="..\Images\showHide.png"></button></h1>
<div class="newsDisplay">
<div class="bodyBox">
<h2>Diablo 3</h2>
TEXT/PARAGRAPHS
</div>
</div>
&#13;
手动将display: block;
更改为display: none;
的行为完全符合预期,因此函数的语法或逻辑不正确,或者在单击按钮时阻止函数执行。
真的可以使用一些帮助,谢谢!
答案 0 :(得分:1)
尝试此类的第一个元素如下
var x = document.getElementsByClassName('newsDisplay')[0];
文档document.single getElementsByClassName()
将返回具有相同类的元素数组。它与document.getElementById()
不同,因为后者返回DOM对象而不是DOM对象数组。
答案 1 :(得分:0)
如其名称countexperience(experienced, fresh)
NameError: name 'experienced' is not defined
所述元素(而不是单个元素),因此此函数调用的结果是集合元素。
要访问集合的第一个元素,您可以:
getElementsByClassName
答案 2 :(得分:0)
如果您想要多个页面,可以尝试循环。关键是你要抓住类的元素列表,因为类不是唯一标识符。您可以使用下面的代码或将其切换为id并通过document.getElementById获取它。请注意document.getElement s ByClassName
中的s
var x = document.getElementsByClassName('newsDisplay');
function showHide() {
for (var i = 0; i < x.length; i++){
x[i].style.display === 'none'
? x[i].style.display = 'block'
: x[i].style.display = 'none';
}
}
<h1>News<button onclick="showHide();"><img src="..\Images\showHide.png"></button></h1>
<div class="newsDisplay">
<div class="bodyBox">
<h2>Diablo 3</h2>
TEXT/PARAGRAPHS
</div>
</div>
<h1>News<button onclick="showHide();"><img src="..\Images\showHide.png"></button></h1>
<div class="newsDisplay">
<div class="bodyBox">
<h2>Diablo 3</h2>
TEXT/PARAGRAPHS
</div>
</div>
答案 3 :(得分:0)
尝试以下代码。
使用此
var x = document.getElementsByClassName('newsDisplay')[0];
function showHide() {
var x = document.getElementsByClassName('newsDisplay')[0];
if (x.style.display === 'none') {
x.style.display = 'block';
} else {
x.style.display = 'none';
}
}
.newsDisplay {
display: block;
}
<h1>News<button onclick="showHide();"><img src="..\Images\showHide.png"></button></h1>
<div class="newsDisplay">
<div class="bodyBox">
<h2>Diablo 3</h2>
TEXT/PARAGRAPHS
</div>
</div>
答案 4 :(得分:0)
如果你点击F12,导航到来源标签(在谷歌浏览器上)你可以在你的javascript函数上设置一个断点,你的代码正在运行,但是你得到了一个
Uncaught TypeError: Cannot read property 'display' of undefined
原因是getElementsByClassName返回一个包含该类选择器的元素列表,而不仅仅是一个。如果您想对第一个元素执行此操作,您可以执行以下操作:
function showHide() {
var x = document.getElementsByClassName('newsDisplay')[0];
if (x.style.display === 'none') {
x.style.display = 'block';
} else {
x.style.display = 'none';
}
}