0

我正在尝试设置一个图像,单击该图像时,会打开一个逐渐变大的 iframe,然后关闭 onmouseout。这是我到目前为止所拥有的:

<html>  
<head>
<link rel="stylesheet" href="Css/style.css" type="text/css" media="screen" />
<script language="JavaScript" type="text/javascript">
function makeFrame(src) {
ifrm = document.createElement("IFRAME");
ifrm.setAttribute("src","");
ifrm.setAttribute("onmouseout","closeFrame()")
ifrm.setAttribute("onclick","grow()")
ifrm.setAttribute("id","amazingIFrame")
ifrm.style.display = "block";
ifrm.style.width = 640+"px";
ifrm.style.height = 400+"px";
ifrm.style.marginLeft = "325";
ifrm.style.marginTop = "125";
ifrm.style.position = "absolute";
ifrm.style.top="0px";
ifrm.style.color="red";
ifrm.style.zIndex= "101";
document.body.appendChild(ifrm);
}
function closeFrame(){
ifrm.style.display = "none";
}
function grow() {
    ifrm = document.getElementById('amazingIFrame');
    if (ifrm.style.width < 500) {
        ifrm.style.width += 10;
    } else {
        clearInterval(interval);  // stop growing when it's big enough
    }
}
function startGrow() {
    interval = setInterval("grow()", 10);  // repeat every 10 ms
}
</script>

</head>
<body>
<img src="" onclick="makeFrame()" "height="100px" width="100px" />

</body>
</html>

但是,这不起作用。有任何想法吗?

4

2 回答 2

0

只有在单击 iframe 时才会触发您连接的单击事件。给它一个宽边框,点击边框,你会发现它有效。在 之后发出警报ifrm = document.getElementById('amazingIFrame');,您会看到。

如果您想在 iframe 内单击时触发 click 事件,则必须在其中放置一些 HTML 并将事件连接到 iframe 本身中的 DOM。

于 2012-09-05T20:59:55.120 回答
0

有几个问题。

  • 你从不打电话startGrow()
  • 创建时 iframe 的大小已经超过 500px
  • ifrm.style.width < 500 是不对的。ifrm.style.width 将包括 px,因此您将 10px 与 500 进行比较...
  • setInterval 语法不正确。应该是 setInterval(grow, 10);
  • 高度前面有一个双引号
  • 你没有传递任何参数,所以 src 将是空的(真的只是不必要的)。

像这样试试

function makeFrame() {
ifrm = document.createElement("IFRAME");
ifrm.setAttribute("src","");
ifrm.setAttribute("onmouseout","closeFrame()")
ifrm.setAttribute("onclick","grow()")
ifrm.setAttribute("id","amazingIFrame")
ifrm.style.display = "block";
ifrm.style.width = 0;
ifrm.style.height = 400+"px";
ifrm.style.marginLeft = "325";
ifrm.style.marginTop = "125";
ifrm.style.position = "absolute";
ifrm.style.top="0px";
ifrm.style.color="red";
ifrm.style.zIndex= "101";
document.body.appendChild(ifrm);
startGrow();
}
function closeFrame(){
ifrm.style.display = "none";
}
function grow() {
    ifrm = document.getElementById('amazingIFrame');
    var width = parseInt(ifrm.style.width.replace("px",""));
    if (width < 500) {
        ifrm.style.width = (width + 10) +"px";
    } else {
        clearInterval(interval);  // stop growing when it's big enough
    }
}
function startGrow() {
    interval = setInterval(grow, 10);  // repeat every 10 ms
}
于 2012-09-05T21:08:41.090 回答