如果显示属性位于标题中,则 JavaScript 切换按钮仅适用于第二次单击

标签 javascript css togglebutton

我遇到了一个有趣的怪癖,想知道是否有人可以帮助我理解它。一个简单的 JavaScript 驱动的切换按钮,如下所示,如果 display:none切换元素包含在行中。但是,当我将 CSS 语句移动到 <style> 时 header 中的标记,或单独的 CSS 文件,它仅在第二次单击时开始切换,从那时起,它工作正常,在每次单击一次切换的基础上。这是 JS 函数:

<script>
    function openSec(ordinal) {
        var tab_name = "sec" + ordinal;
        if (document.getElementById(tab_name).style.display == "none") {
            document.getElementById(tab_name).style.display = "table";
        } else {
            document.getElementById(tab_name).style.display = "none";
        }
    }
</script>

最佳答案

当 CSS 语句位于样式标签中时,它不再作为被单击的 DOM 元素的属性存在。浏览器仍在应用样式,但 DOM 元素不再具有该值作为样式属性。所以第一次点击时,没有显示:无,所以它添加了它,然后在第二次点击时将其替换为表格。

使用浏览器的开发工具(或类似 Firebug 的工具)检查初始 HTML,然后在第一次点击后再次检查它,我想您会发现不同之处。

关于如果显示属性位于标题中,则 JavaScript 切换按钮仅适用于第二次单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328253/

相关文章:

android - 如何将单选按钮用作切换按钮 (Android)?

WPF弹出隐藏问题

Android ToggleButton 指示器

JavaScript 知道添加新元素的通用方法

javascript - meteor onepage_scroll 包不适用于选项卡

javascript - child UL 对父亲 LI 动画的奇怪行为

javascript - 无法粘住导航栏

javascript - 对 Javascript 中的提升感到困惑

javascript - 使用 React 中的全局变量,这些变量在运行时提供,因此在构建时未知

css - 具有响应图像的 flexbox 中的高度定义 - Chrome/Safari