Javascript if/else 没有按预期工作

标签 javascript css

我正在尝试使用链接切换隐藏菜单。但是当我点击链接时,它会重新打开隐藏的菜单而不是将其关闭

这是我期望它运行的方式:

  • 当我点击 labelLink
    如果 hiddenBoxdisplay = 'none',则将其更改为 display = 'block'
    如果 hiddenBoxdisplay = 'block',则通过 blur() 删除它的焦点并设置它 display='none'

  • 当我在 hiddenBox 之外单击时它有焦点,设置 hiddenBox 的 display='none'
    (这部分运行良好。)

JsFiddle

<ul>
    <li> 
        <a id="labelLink"  href="#" 
            onclick="
                if(document.getElementById('hiddenBox').style.display === 'block'){
                    document.getElementById('labelLink').focus();
                    document.getElementById('hiddenBox').style.display ='none';
                }
                else{
                    document.getElementById('hiddenBox').style.display = 'block';
                    document.getElementById('hiddenBox').focus();
                }
                return false;"
        >
        Click Me
        </a>
        <div id="hiddenBox" tabindex="-1"  
            onblur="document.getElementById('hiddenBox').style.display ='none';"
        >
        I was hidden
        </div>
    </li>
</ul>

最佳答案

改为这样做。

var labelLink = document.getElementById('labelLink');
var hiddenBox = document.getElementById('hiddenBox');

labelLink.addEventListener('click', function() {
  hiddenBox.style.display = hiddenBox.style.display == 'block' ? 'none': 'block';
});

labelLink.addEventListener('blur', function() {
  hiddenBox.style.display = 'none';
})
#hiddenBox {
  display: none
}
<ul>
  <li><a id="labelLink" href="#">Click Me</a>
    <div id="hiddenBox" tabindex="-1">I was hidden</div>
  </li>
</ul>

关于Javascript if/else 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331555/

相关文章:

javascript - 使用 2017 年的 React-router React-transition-group 示例,其中内容组件不渲染

javascript - 将 javascript 事件添加到输入复选框以在代码隐藏 asp.net 中执行,

javascript - 如何获取一年中的第几周并将其用作图像源?

javascript - 按钮未正确更新输出

css - 谷歌地图边界半径在手机上不受尊重

javascript - Ember.js - Ember.Js View inside handlebars 条件 : view not being displayed?

javascript - DELETE 请求时参数为 NULL

jquery - 如何设置图表的宽度和高度? (与 Visualizer 插件一起使用)

html - 在 flexbox 中将元素右对齐

css - 如何检查 Tailwind 是否确实清除了 css?