【问题标题】:Show/Hide JavaScript not working in IE, only in Firefox显示/隐藏 JavaScript 在 IE 中不起作用,仅在 Firefox 中
【发布时间】:2013-12-31 03:13:20
【问题描述】:

这是我在网上找到的显示/隐藏脚本。当您单击“查看菜单”图像时,它应该为每个部分显示隐藏的div。由于某种原因,我无法在 Internet Explorer 上显示/展开它,但它在 Firefox 中运行良好。
http://www.abatchoflove.com

<script type="text/javascript">
    function unhide(divID) {
        var item = document.getElementById(divID);
        if (item) {
            item.className = (item.className == 'hidden') ?'unhidden':'hidden';
        }
    }
</script>

这是 CSS 部分。

<style type="text/css">
    .hidden { display: none; }
    .unhidden { display: block; }
</style>

这就是这些部分中的代码。

<td valign="top" bgcolor="#51BEB7">
    <a href="javascript:unhide('cookiesmenu');">
        <img src="images/cookies_nav.gif" border="0" usemap="#Map2">
    </a>
    <div id="cookiesmenu" class="hidden">
        <img src="images/cookies_menu.gif">
    </div>
</td>


如果我能得到一点帮助会很高兴......或者如果有其他方法可以解决它。提前谢谢你。

【问题讨论】:

  • 我建议您使用 jQuery 或其他 javascript 库来为您处理这个问题,因为它们都为维护跨浏览器兼容性付出了巨大的努力。
  • 我会尝试直接更改样式属性: item.style.display = "block"; vs item.style.display = "none";
  • 在我看来,就像您的 javascript:unhide('cookiesmenu') 一样,因为 href 没有在 IE 中执行。我建议您切换到事件处理程序而不是 javascript: URL。我不知道这是 IE 中的问题,但常规事件处理程序在 IE 中工作得很好,并且您的 unhide() 函数中的 IE 中的断点根本没有被命中。

标签: javascript html css


【解决方案1】:

你可以使用

&lt;a onclick="unhide('cookiesmenu')"&gt;

而不是

&lt;a href="javascript:unhide('cookiesmenu');"&gt;

【解决方案2】:

Internet Explorer 保留字已用作标识符(函数或变量名称)。

item 更改为另一个变量名并试一试。

http://www.ecma-international.org/ecma-262/5.1/#sec-7.6.1.1

http://www.springenwerk.com/2009/01/is-reserved-word-in-internet-explorer-6.html

IE Issue with jquery and JS

如果您想先测试这是否是您的问题,请使用不同变量名的脚本。

function unhide(divID) {
    var MyItem = document.getElementById(divID);
    if (MyItem) {
        MyItem.className = (MyItem.className == 'hidden') ? 'unhidden' : 'hidden';
    }
}

http://jsfiddle.net/GvKLX/1/

请注意,出于安全原因,“内联 javascript”往往会消失。因此,您应该考虑使用 jQuery 等 javascript 库来改造您的代码。这意味着,即使是像“onclick”这样的 javascript 事件也将过时。

【讨论】:

  • 但是,在 IE10 中甚至没有调用该函数。
  • 在您的 IE10 中尝试我的答案提供的 jsFiddle,然后回来告诉我会发生什么。此外,如果您可以提供控制台错误日志,那将非常有帮助。
  • 我不是 OP。我刚刚观察到在 OP 的页面中未在 IE 中调用 unhide 函数(其中的断点未命中)。 modified version of your jsFiddle 使用名为 item 的变量,就像 OP 在 IE10 中对我来说工作得很好。因此,显然 OP 页面中正在发生其他事情,这似乎并没有改变任何事情。此外,弗里德的回答似乎已经解决了 OP 的问题。
  • @jfriend00 感谢您的确认。我目前无法为自己测试,并将修改答案以获取建议。
猜你喜欢
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 2010-10-24
  • 2012-04-20
  • 1970-01-01
  • 2010-11-20
  • 2011-01-25
  • 2020-06-04
相关资源
最近更新 更多