使用style控制display实现显示隐藏失效,求助原因分析
问题出在字符串里的多余分号!
嘿,我一眼就揪出问题啦!你这段代码的bug非常细微,但直接导致了切换功能失效:
if (Selem.style.display == "none") Selem.style.display = "block;" // 这里的";"完全多余! else Selem.style.display = "none;" // 这里也是一样的问题!
在CSS样式表中写属性时,分号是用来分隔不同属性的语法要求,但通过JS直接操作element.style.display时,我们只需要传入纯属性值的字符串就行,不需要带分号。你现在把"block;"和"none;"作为值传递,浏览器会把这个带分号的字符串当成无效的display值,自然不会执行预期的显示/隐藏切换。
修正后的代码应该是这样:
function ShowHideModal(elemID) { var Selem = document.getElementById(elemID); if (Selem != null) { if (Selem.style.display == "none") { Selem.style.display = "block"; } else { Selem.style.display = "none"; } } }
顺带提个小建议:哪怕是单行的if/else语句,也尽量加上大括号,这样后续修改代码时不容易出现逻辑错误,可读性也更强哦~
内容的提问来源于stack exchange,提问作者MaxOvrdrv
相关产品推荐
相关产品推荐

