Эта строка:
summaryIn.removeChild(summaryIn.lastChild);
, кажется, зависит от практики преобразования имен и идентификаторов элементов в глобальные переменные, которые ссылаются на элемент.Это нестандартная практика, которая реализована не всеми браузерами.
Вместо этого используйте соответствующие стандартам:
var summaryIn = document.getElementById('summaryIn');
Теперь вы можете вызвать его метод removeChild .Вам, вероятно, следует проверить, что вы собираетесь удалить, поскольку изначально кнопка «Добавить еще одну сводку» является последним дочерним элементом.
Редактировать
По договоренности имена функций начинаются сзаглавная буква зарезервирована для cosntructors, поэтому я использовал нижний регистр.
Чтобы удалить div и его содержимое из документа:
// Go up DOM until reach parent element with tagName
// If no such node found, return undefined.
function upTo(el, tagName) {
tagName = tagName.toLowerCase();
while (el.parentNode) {
el = el.parentNode;
if (el.tagName.toLowerCase() == tagName) {
return el;
}
}
}
function delSummary(el){
var div = upTo(el, 'div');
div.parentNode.removeChild(div);
}
И назвать его так:
<button ... onclick="delSummary(this);" ...>-</button>
Хотя имена атрибутов HTML не чувствительны к регистру, я считаю, что использование верблюжьего регистра делает их трудными для чтения и поэтому использует строчные буквы.