Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐藏/显示IE-Javascript中的元素_Javascript_Html_Css - Fatal编程技术网

隐藏/显示IE-Javascript中的元素

隐藏/显示IE-Javascript中的元素,javascript,html,css,Javascript,Html,Css,我正在使用一个脚本,如果用户正在或没有使用IE,它会弹出一个警报 与此相反,我希望在页面中显示或隐藏div元素 我在这里尝试过,但没有成功: 此处的工作警报演示: 函数GetIEVersion(){ var sAgent=window.navigator.userAgent; var Idx=sAgent.indexOf(“MSIE”); //如果是IE,返回版本号。 如果(Idx>0) 返回parseInt(sAgent.substring(Idx+5,sAgent.indexOf(“.”,

我正在使用一个脚本,如果用户正在或没有使用IE,它会弹出一个
警报

与此相反,我希望在页面中显示或隐藏
div
元素

我在这里尝试过,但没有成功:

此处的工作警报演示:

函数GetIEVersion(){ var sAgent=window.navigator.userAgent; var Idx=sAgent.indexOf(“MSIE”); //如果是IE,返回版本号。 如果(Idx>0) 返回parseInt(sAgent.substring(Idx+5,sAgent.indexOf(“.”,Idx)); //如果是IE 11,则查找更新的用户代理字符串。 else if(!!navigator.userAgent.match(/Trident\/7\./)) 返回11; 其他的 返回0;//它不是IE } var e=document.getElementById(ie); var e2=document.getElementById(chrome); 如果(GetIEVersion()>0) 警报(“这是IE”+GetIEVersion()); e、 style.display='block'; e2.style.display='none'; 其他的 警惕(“这不是IE”); e、 style.display='none'; e2.style.display='block'

即
铬

在使用
if
/
else
语句时,应使用
{}
。当只有一条语句时,选项是可选的,但当有多条语句时,选项是强制性的。我建议无论语句的数量多少,都要始终使用
{}

您还需要将字符串传递给
getElementById()

函数GetIEVersion(){ var sAgent=window.navigator.userAgent; var Idx=sAgent.indexOf(“MSIE”); //如果是IE,返回版本号。 如果(Idx>0){ 返回parseInt(sAgent.substring(Idx+5,sAgent.indexOf(“.”,Idx)); } //如果是IE 11,则查找更新的用户代理字符串。 else if(!!navigator.userAgent.match(/Trident\/7\./)){ 返回11; } 否则{ 返回0;//它不是IE } } var e=document.getElementById('ie'); var e2=document.getElementById('chrome'); 如果(GetIEVersion()>0){ 警报(“这是IE”+GetIEVersion()); e、 style.display='block'; e2.style.display='none'; } 否则{ 警惕(“这不是IE”); e、 style.display='none'; e2.style.display='block'; }

即
铬

如果没有使用条件IE注释的Javascript,您可以轻松实现这一点(IE与非IE)

<!--[if IE ]>
  <style>
    #chrome { display: none; }
  </style>

  <div id="ie">
    ie
  </div>
<![endif]-->
<div id="chrome">
  chrome
</div>

注意这只适用于IE9及以下版本-如果您在IE10或以上版本中使用标准或怪癖模式,条件注释将不起作用

如果在
if
else
中有多个语句,则需要将它们用大括号括起来

if (GetIEVersion() > 0) {
   alert("This is IE " + GetIEVersion());
   e.style.display = 'block';
   e2.style.display = 'none';
} else {
   alert("This is not IE.");
   e.style.display = 'none';
   e2.style.display = 'block';
}

似乎是语法错误

if (GetIEVersion() > 0)  {
   alert("This is IE " + GetIEVersion());
   e.style.display = 'block';
   e2.style.display = 'none';
   }
else { 
   alert("This is not IE.");
   e.style.display = 'none';
   e2.style.display = 'block';
   }

我从Stack Overflow answer检测Chrome的以下代码片段中获得了巨大成功:

我已经测试过了,它在InternetExplorer上运行得很好

它避免了我喜欢的
.indexOf()
方法。您只需将正则表达式中的搜索参数替换为MSIE即可


警报是否有效?该
if
语句中没有括号您需要
{}
括号来说明多行ifsOverall,两个(或三个)问题,使用最基本的控制台检查方法可以完全避免这些问题。它(正确地)报告了
else
语句是错误的,因为它与任何
if
s不匹配,它还抱怨
e
null
,如果该错误被修复,它也会抛出与
e2
相同的错误。我们每天都会在这里看到几十次这样的新手失误,但通常都是来自……嗯,新手。我原以为一个5年超过2k的会员代表会。有基本的技能来避免它们2。不要跑到SO去寻求调试帮助。@TankorSmash谢谢:-)谢谢你的回答。我在这里做了更新:但它似乎仍然显示了两个div:(火箭的名字,火箭的性质-什么速度!:-D谢谢you@michaelmcgurk:检查您的
getElementById()
行。您需要传递字符串。@michaelmcgurk检查JavaScript控制台,原因变得很清楚
TypeError:e为null
。由于并非所有IE版本都支持
.indexOf()
方法,我建议使用
.match()
方法。难以置信。这是大多数编程语言中的常见语法。你通常是Python程序员吗?这是唯一一种使用缩进而不是括号的通用语言。@Barmar:或者他可以习惯于在
if
/
else
中的单行中省略缩进的语法。这就是一个非常干净的方法-我喜欢它!虽然IE10和更高版本中有条件评论。@Teemu在标准和怪癖模式中(大多数人可能会选择-只是想澄清一点)。谢谢你的评论,我会更新我的回答。非常感谢亚历山大花时间回复我的详细回复。非常感谢:-)
var detectID = (function() {
  var ua = navigator.userAgent,
    tem,
    M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
  if (/trident/i.test(M[1])) {
    tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
    return 'IE ' + (tem[1] || '');
  }
  if (M[1] === 'Chrome') {
    tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
    if (tem != null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
  }
  M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
  if ((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]);
  return M.join(' ');
})();

if (detectID.match("IE") || detectID.match("MSIE") ) {
  console.log("IE Browser Detected: " + detectID);
} else {
  console.log("Not IE: " + detectID);
}