0

ボタンを押すとiframeを削除できるIframeを動的に作成するjavascript関数を書いています。

これらは私の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 に答える