【问题标题】:Browser not updating after remove or add a class in HTML element using Tailwind-CSS使用 Tailwind-CSS 在 HTML 元素中删除或添加类后浏览器未更新
【发布时间】: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


【解决方案1】:

您的&lt;form&gt; 标记上似乎缺少结束标记。我使用了您的代码并简单地添加了一个结束 &lt;/form&gt; 标记并在表单中添加了一些内容,它对我有用。

<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">
  <input type="text"> <button>Submit</button>
</form>

尝试将您的 HTML 更改为这个,看看它是否有效。

【讨论】:

  • 在我的代码中,我有一个 &lt;form/&gt; 标签的结束标签。
  • 这只是对答案的猜测,并不是真正的解决方案。该代码可以使用或不使用结束标记。这不是问题。您应该在发布之前测试您的解决方案,并且您会看到结束标记的快速提及应该在评论中。如果您删除此答案,stackoverflow 会很有帮助,因为答案错误的问题通常会被忽略,并且可能永远不会得到正确答案。
  • @ChrisL 这不是猜测,原始帖子在表单中没有结束标记或任何 html。所以没有什么可显示或隐藏的。我确实测试了我的解决方案,为什么你会认为我没有测试它?
猜你喜欢
  • 1970-01-01
  • 2021-03-31
  • 2022-12-06
  • 2013-04-06
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多