簡體   English   中英

錯誤document.getElementById為null

[英]Error document.getElementById is null

我正在實現一些javascript函數,這些函數可以動態創建新的iframe和相關按鈕以將其刪除。

這是我創建的用於創建按鈕的代碼:

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

有什么問題?? 提前致謝!

你應該減少

numbutt

當刪除一個,即numButt--; 在功能removeButton中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM