我实现了一些动态创建新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); }
}
}
}
}
问题是什么? 提前谢谢!
答案 0 :(得分:0)
你应该减少
numButt
删除一个即numButt--;在函数removeButton。