2014-12-28 1 views
-1
function reloadItems() 
    { 
     var docBody = document.body; 
     docBody.removeChild(document.getElementsByClassName("itemsLayout")); 
    } 

Я использую этот код для удаления элемента в моей DOM, но как только я запускаю код, ничего не происходит, я использую XAMPP Local Server и не делаю знать причину этой ошибкиКак удалить элемент по классам (собственный метод)

«Этот элемент является прямым потомком в теле DOM»

+0

try 'element.parentNode.removeChild (element);' – Lal

+1

Мне трудно поверить, что «ничего не случилось». Вы должны были получить консольную ошибку, такую ​​как «Uncaught TypeError: Не удалось выполнить« removeChild »в« Узле »: параметр 1 не имеет тип« Node ».» Вы смотрели консоль? –

+0

Этот вопрос не является ни «опечаткой», ни «не-ревью», чтобы перефразировать первую часть данной близкой причины. Я бы тоже утверждал, что это по теме, несмотря на то, что это не большой вопрос, или особенно сложный вопрос. Голосование для повторного открытия. –

ответ

2

removeChild() ожидает ребенка (в единственном числе), и будет работать только на отдельных узлах в то время; В таком случае вам нужно использовать цикл:

function reloadItems() { 
    var docBody = document.body, 
     items = document.getElementsByClassName('itemsLayout'); 
    while (items.length) { 
     items[0].parentNode.removeChild(items[0]); 
    } 
} 

Кстати, getElementsByClassName(), благодаря Internet Explorer 8 меньше, чем поддерживается querySelectorAll(), поэтому я хотел бы предложить переход на:

function reloadItems() { 
    var docBody = document.body, 
     items = document.querySelectorAll('.itemsLayout'); 
    while (items.length) { 
     items[0].parentNode.removeChild(items[0]); 
    } 
} 

Литература:

+0

есть что-нибудь, что удаляет весь элемент напрямую? –

+0

Что такое «весь элемент», о котором вы говорите? –

+0

Например, этот div, есть ли функция, чтобы удалить его напрямую? –