0

我正在实现一些动态创建新 iframe 和删除它的相关按钮的 javascript 函数。

这是我为创建按钮而编写的代码:

function addButton(iframeId, num) {
    var butt = document.createElement('button');
    var butt_text = document.createTextNode(num);
    butt.appendChild(butt_text);
    butt.id = num + 100;
    butt.onclick = function() { removeButton(butt.id); removeIframe(iframeId, butt.id); }
    document.body.appendChild(butt);
    numButt++;
}

这就是我所说的:

addElement(iframe.id, cont);

参数“cont”是一个从1开始的计数器,并在函数中增加以创建新的iframe,因此第一个按钮将命名为101并消除iframe#1,第二个按钮将命名为102并消除帧#2,依此类推。

“numButt”是一个从0开始的计数器,计算创建了多少个按钮,所以要知道最后创建的按钮的id。

删除按钮的功能是这样的,它工作正常:

function removeButton(buttonId) {
    butt = document.getElementById(buttonId);  
    if (butt) { 
        butt.parentNode.removeChild(butt);
    }
}

现在我想重新分配按钮的 onclick 事件。因为如果我删除 iframe #3,所有 id 高于 3 的 iframes.id 都将使用此函数重命名(我需要重命名,因为我的 resizeIframe 函数适用于相应的 ID):

function renameIds(elim) {
    for (i = 1; i <= cont; i++) {
        if (i > elim) {
            document.getElementById(i).id = i-1;
        }
    }
}

我需要更改按钮的 onclick 事件,以便名为 104 的按钮将消除 iframe #3,按钮 105 将消除帧 #4,依此类推。

我在 removeIframe 函数中执行此操作,但它不起作用,因为 Firefox 错误控制台返回“document.getElementById(a) is null”:

function removeIframe(iframeId, buttId) {
    iframe = document.getElementById(iframeId);
    var a;
    if (iframe) {
        iframe.parentNode.removeChild(iframe);
        renameIds(iframeId);
        cont--;
        resizeIframe();
        for (a = 101; a <= 100+numButt; a++) {
            if (a > buttId) {
                document.getElementById(a).onclick = function() { removeButton(a); removeIframe(a-101, a); }
            }
        }
    }
}

有什么问题??提前致谢!

4

1 回答 1

0

你应该减少

numButt

当删除一个即 numButt--; 在函数 removeButton 中。

于 2012-05-28T09:45:58.797 回答