要素を「リセット」するには、元のコンテンツを覚えておく必要があり、後で「リセット」するために呼び出されたときに置き換える必要があります。
var markupCache = {};
function modifyElement(id, newMarkup) {
var el = document.getElementById(id);
// Only store innerHTML the first time
if (!(el in markupCache)) {
markupCache[id] = document.getElementById(id).innerHTML;
}
el.innerHTML = markup;
}
function restoreElement(id) {
// Only restore markup if have cached some for this element
if (id in markupCache) {
document.getElementById(id).innerHTML = markupCache[id];
}
}
これにより、要素自体のプロパティと属性はリセットされず、内部 HTML のみがリセットされることに注意してください。これは、 outerHTMLプロパティを使用することで部分的に修正される可能性がありますが、十分にサポートされていません。
innerHTMLもouterHTMLも、動的に追加されたリスナーを復元せず、一部のブラウザーでは元のデフォルト値を復元する場合と復元しない場合があります (ただし、他のブラウザーでは復元されます)。