[英]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.