Бретт - знаете ли вы, что getElementyByClassName
поддержка от IE 5,5 до 8 не существует согласно quirksmode ?. Если вы заботитесь о кросс-браузерной совместимости, вам будет лучше следовать этой схеме:
- Получить элемент контейнера по ID.
- Получить необходимые дочерние элементы по имени тега.
- Итерация по дочерним элементам, проверка на соответствие свойству className.
elements[i].parentNode.removeChild(elements[i])
как говорили другие парни.
Быстрый пример:
var cells = document.getElementById("myTable").getElementsByTagName("td");
var len = cells.length;
for(var i = 0; i < len; i++) {
if(cells[i].className.toLowerCase() == "column") {
cells[i].parentNode.removeChild(cells[i]);
}
}
Вот небольшая демонстрация.
РЕДАКТИРОВАТЬ: Вот исправленная версия, характерная для вашей разметки:
var col_wrapper = document.getElementById("columns").getElementsByTagName("div");
var elementsToRemove = [];
for (var i = 0; i < col_wrapper.length; i++) {
if (col_wrapper[i].className.toLowerCase() == "column") {
elementsToRemove.push(col_wrapper[i]);
}
}
for(var i = 0; i < elementsToRemove.length; i++) {
elementsToRemove[i].parentNode.removeChild(elementsToRemove[i]);
}
Проблема была в моей вине; Когда вы удаляете элемент из полученного массива элементов, длина изменяется, поэтому один элемент пропускается на каждой итерации. Решение состоит в том, чтобы сохранить ссылку на каждый элемент во временном массиве, а затем зациклить их, удалив каждый из DOM.
Попробуйте здесь.