4

我有一个 iframe,它作为弹出窗口出现。正上方是由关闭按钮组成的 ap 标签。

现在,在单击框架上的一个链接时,我将像这样关闭它:

 window.parent.document.getElementById('myIframeId').
 parentNode.removeChild(window.parent.document.getElementById('myIframeId'));

但是,p 标签仍然存在并且没有关闭。这是代码:

<p class="close"><a href="#"><img src="buttonClose.jpeg" alt="Close"/></a></p>
<iframe id="myIframeId" style="display:none;" height="430" width="675" src="myjsp.jsp" ></iframe>

当我在 firebug 中看到时,我可以看到 iframe 标签不再存在,但 p 标签仍然存在并且它不会关闭,如果没有通过单击关闭图标手动关闭。

编辑:根据大卫的建议,我将机器人标签包装在 div 中:

<div id = "closeModal">
<p class="close"><a href="#"><img src="buttonClose.jpeg" alt="Close"/></a></p>
<iframe id="myIframeId" style="display:none;" height="430" width="675" src="myjsp.jsp" ></iframe>
</div>

但是,现在每次我使用大卫的建议关闭 iframe 时,都会像这样添加另一个动态 div:

<div id="myContainerModal" class="" style="z-index: 9999; width: 675px; position: absolute; top: 75px; left: 290px; opacity: 0.999999;">
<div id = "closeModal">
<p class="close"><a href="#"><img src="buttonClose.jpeg" alt="Close"/></a></p>
<iframe id="myIframeId" style="display:none;" height="430" width="675" src="myjsp.jsp" ></iframe>
</div>
</div>

现在我怎样才能摆脱动态 div : myContainerModal ,它不会走出屏幕?

关闭 iframe 后如何关闭此 p 标签?请帮助。

4

3 回答 3

4

您可以访问#myIframeId's previousElementSibling,这将是p.

var iframe = window.parent.document.getElementById('myIframeId');
iframe.parentNode.removeChild(iframe.previousElementSibling);
iframe.parentNode.removeChild(iframe);

div但是,将两个元素包装在 a中并通过 ID 而不是 iframe 将其删除会更简单,并且可以说更整洁。

HTML:

<div id="iframe-container">
   <p class="close">...</p>
   <iframe>...</iframe>
</div>

JS:

var iframe = window.parent.document.getElementById('iframe-container');
iframe.parentNode.removeChild(iframe);
于 2012-11-21T07:52:19.343 回答
4

你可以使用这个:

var p = document.getElementsByClassName("close")[0]
p.parentNode.removeChild(p);

不过,最好将 a 添加id="someName"到 p 中,如下所示:

<p class="close" id="close"><a href="#"><img src="buttonClose.jpeg" alt="Close"/></a></p>
<iframe id="myIframeId" style="display:none;" height="430" width="675" src="myjsp.jsp" ></iframe>​

然后你可以按如下方式删除它:

var p = document.getElementById("close")
p.parentNode.removeChild(p);

这将防止您将索引 ( [0]) 硬编码到您的 js 中。

于 2012-11-21T07:52:56.080 回答
0

您可以通过类名找到 P 标签,然后您也可以尝试将其删除。

于 2012-11-21T07:51:49.103 回答