IE浏览器下隐藏HTML元素的代码失效,请求排查错误原因
问题分析与修复方案
兄弟,我帮你排查了下代码,发现两个关键问题导致功能失效:
布尔值与字符串的错误比较:你的
isIE变量是布尔类型(要么是true要么是false),但你判断的时候用了isIE === 'true'——这里的'true'是字符串,布尔值的true和字符串的'true'完全不相等,所以这个判断分支永远不会被触发。定义了函数但未调用:就算判断分支能进入,你只是定义了
display函数,却没有执行它,所以隐藏元素的代码根本没机会运行。
修复后的代码
HTML部分(无需修改)
<div id="content"> Hello </div>
JavaScript部分(简化版)
// 检测IE的逻辑没问题,保留 var isIE = /*@cc_on!@*/false || !!document.documentMode; // 修正判断条件,直接用布尔值判断 if (isIE) { // 不需要额外定义函数,直接执行隐藏操作即可 document.getElementById('content').style.display = "none"; }
保留函数写法的版本
如果你确实想保留函数的结构,记得定义后立即调用:
var isIE = /*@cc_on!@*/false || !!document.documentMode; if (isIE) { function display() { document.getElementById('content').style.display = "none"; } // 必须调用函数才会执行隐藏逻辑 display(); }
这样修改后,当访客使用IE浏览器时,#content元素就会被正确隐藏啦~
内容的提问来源于stack exchange,提问作者user1726263
相关产品推荐
相关产品推荐

