错误document.getElementById为null

时间:2012-05-28 09:40:19

标签: javascript

我实现了一些动态创建新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错误控制台返回我&#34; document.getElementById(a)为null&#34;:

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); }
            }
        }
    }
}

问题是什么? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

你应该减少

  

numButt

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