0

我正在编写一个 javascript 函数,该函数动态创建一个带有按钮的 iframe,如果按下该按钮可以删除它的 iframe。

这些是我的 javascript 函数:

 function createIframe (iframeName, width, height) {
    var iframe;
    if (document.createElement && (iframe = document.createElement('iframe'))) {
        iframe.name = iframe.id = iframeName;
        iframe.width = width;
        iframe.height = height;
        var connectIP = document.getElementById("ip").value;
        var connectPORT = document.getElementById("port").value;
        iframe.src = "http://"+connectIP+":"+connectPORT;
        document.body.appendChild(iframe);

        addElement(iframe.name);
    }
    return iframe;
}

function removeIframe(iframeName) {
    iframe = document.getElementById(iframeName);  
    if (iframe) { 
        var x=iframe.parentNode.removeChild(iframe) 
    }
}

function addElement(iframeName) {
    var butt = document.createElement('button');
    var butt_text = document.createTextNode('Remove');
    butt.appendChild(butt_text);
    butt.onclick = removeIframe(iframeName);
    document.body.appendChild(butt);
}

问题是,当按钮创建时,onclick 函数会立即执行,而不仅仅是当用户按下它时,所以我的新 iframe 会立即被删除,我看不到它。

我怎么解决这个问题?

此外,是否可以将按钮不在父正文中而是直接添加到新创建的 iframe 中?

提前致谢。

4

2 回答 2

2

您需要将函数处理程序而不是函数调用结果传递给onclick属性。

您可以使用匿名函数来做到这一点:

butt.onclick = function() { removeIframe(iframeName); };
于 2012-05-24T10:15:28.830 回答
2

onclick 必须是一个函数,替换以下行

butt.onclick = removeIframe(iframeName);

butt.onclick = function() { removeIframe(iframeName); }
于 2012-05-24T10:15:51.217 回答