【发布时间】:2020-10-01 16:13:27
【问题描述】:
我有一个带有extendSearch id 的span 元素,单击它时应该展开或折叠带有searchSection id 的表单元素。折叠和展开基于添加或删除 css hidden 类。
Tailwind-css 之外的 CSS 代码:
.hidden {
display: none;
}
HTML 代码
<span id="extendSearch" class="cursor-pointer px-2 font-xl mr-2">-</span>
<form id="searchSection" method="post" class="p-5 w-full md:grid md:grid-cols-3 md:gap-4">
<label>Search</label>
<input type="text" />
</form>
Javascript 代码
let extendSearch = document.getElementById("extendSearch");
let searchSection = document.getElementById("searchSection");
extendSearch.addEventListener('click', () => {
if (searchSection.classList.contains('hidden')) {
searchSection.classList.remove('hidden');
extendSearch.innerText = "-";
} else {
searchSection.classList.add('hidden');
extendSearch.innerText = "+";
}
});
由于某种原因,当我打开开发者工具时,这段代码运行良好。即,classList 得到更新,span 元素的文本得到更新,浏览器呈现更改(表单消失并出现)。
但当开发者工具关闭时,classList 会更新,span 元素的文本也会更新,但浏览器不会呈现更改。 Chrome 和 Microsoft Edge 上的行为相同。
我尝试使用.toogle(),但行为相同。我试图删除eventListener 并在span 标记中调用方法onclik,但它也具有相同的行为。
【问题讨论】:
-
需要查看此问题的minimal reproducible example。打开/关闭的开发者工具根本不应该影响这个逻辑。
-
也许您可以使用
visibility:hidden而不是display:none? -
不是一个干净的解决方案,但如果没有任何效果,请尝试触发窗口调整大小事件。
-
似乎可以在this jsfiddle 中正确使用您的代码。您想在单击时在 + 和 - 之间切换吗?
-
@AlexH 该选项对我的情况无效,当我不打算拥有一个时,它会留下一个空间。它会破坏我的设计。
标签: javascript html css dom tailwind-css