新しい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 が削除され、2 番目のボタンの名前は 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); }
}
}
}
}
どうしたの??前もって感謝します!