0

我有一个使用Prototype JS 框架的非常简单的网页微调器:

框架nav

Event.observe(
    'doit',
    'click',
    function(){
      parent.window.frames.cont.spinner.removeAttribute('style');
    },
    false);

框架cont(这是 中的第一个元素<body>):

<div id="spinner" style="display: none;"></div>

CSS:

#spinner {
    width: 50px;
    height: 50px;
    position: fixed;
    top: 50%;
    left: 50%;
    background: url(spinner.gif) transparent no-repeat center;
    margin-left: -25px;
    margin-top: -25px;
    z-index: 2;
}

<div>很简单,它是一个以框架为中心的固定位置cont,并在浏览器加载页面时隐藏(也是为了避免在非 JS 浏览器中出现问题)。当用户单击nav框架中的按钮时,该style属性将被删除,并且用户会看到微调器,直到下一页接管。这在 Firefox 中工作得很好,但 IE 9 拒绝工作。这是我从他们的标准F12界面中发现的:

  • 只有一个具有 ID 的元素spinner
  • 运行parent.window.frames.cont.spinner.removeAttribute('style')parent.window.frames.cont.document.getElementById("spinner").removeAttribute("style")控制台选项卡中返回true但会导致下一个元素被隐藏!这不会以任何明显的方式反映在HTML选项卡中 - 隐藏的元素仍然有style="display: block;".

我尝试使用 Prototype 的show(),它在 Firefox 中有效,但在 IE9 中无效...

4

2 回答 2

1

当添加/删除类更容易时,为什么要删除样式属性?无论如何,如果您要做的只是显示/隐藏一个 div,为什么不只更改“显示”样式属性呢?

于 2012-09-05T16:21:00.327 回答
1

无需尝试删除样式属性,只需将“display”属性设置为“block”即可。

document.getElementById("spinner").style.display = "block"
于 2012-09-06T19:57:26.990 回答