我的页面上有一个横幅,它的大小相当广泛,因此我想为用户提供切换其可见性的功能(使用Display属性/属性)。我的按钮可以用来设置Display:none,但是在再次单击时无法将其设置回Display:block。代码段:
CSS:
.banner-row {
display: block;
}
HTML:
<button class="btn btn-default navbar-btn" onclick="toggleBanner()"><span class="dx-icon-collapse icon"></span></button>
JavaScript:
<script>
function toggleBanner() {
if (document.getElementById("banner-row").style.display = "block") {
document.getElementById("banner-row").style.display = "none";
}
else if (document.getElementById("banner-row").style.display = "none") {
document.getElementById("banner-row").style.display = "block"
}
}
</script>
我希望我的要求是可能的,对于我的任何愚蠢错误,我们深表歉意!还在学习所有这些东西。
答案 0 :(得分:1)
有很多问题:
1)您正在尝试使用HTML中的id
来设置元素的样式,而CSS中的元素是class
。
2)您正在以=
条件而不是doing a comparison (==
or ===
)分配(if/else
)个值。
3)您正在检查内联样式,最初,标语没有一种,因此display
为空。您可以像下面所做的那样检查,也可以使用getComputedStyle
。
// Cache the element so you don't repeat yourself
const banner = document.getElementById("banner-row");
function toggleBanner() {
if (banner.style.display === "block" || banner.style.display === '') {
banner.style.display = "none";
} else {
banner.style.display = "block"
}
}
#banner-row {
display: block;
}
<div id="banner-row">BANNER</div>
<button class="btn btn-default navbar-btn" onclick="toggleBanner()">Click</button>
答案 1 :(得分:1)
当您使用一个类来隐藏标题时,在JS中,您只需简单地切换类列表即可。
const banner = document.getElementById("banner-row");
const button = document.getElementsByTagName("button")[0];
toggleBanner = () => banner.classList.toggle("hidden");
.hidden {
display: none;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<div id="banner-row">
<img src="https://via.placeholder.com/300x100">
</div>
<button class="btn btn-default navbar-btn" onclick="toggleBanner()">
<span class="dx-icon-collapse icon"></span>
</button>
答案 2 :(得分:0)
您需要在if和else if条件中使用==代替=。 ==是JavaScript中的比较运算符,=用于分配值。