Бретт - вы знаете, что 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]);
}
}
Вот быстрая демонстрация.
EDIT: Вот фиксированная версия, специфичная для вашей разметки:
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.
Попробуйте здесь.