2015-07-08 4 views
0

У меня есть следующий код:NotFoundError: DOM Exception 8 на InsertBefore в прослушивателя событий

HTML:

<div id="tree"> 
    <ul class="root"> 
    <li class="add">+</li> 
    </ul> 
</div> 

JavaScript:

window.onload =() => { 
    let root = document.getElementsByClassName("root")[0]; 
    root.addEventListener("click", (e) => { 
    if (e.target.classList.contains("add")) addNode(e); 
    return false; 
    }, false); 

    function addNode(e) { 
    let item = document.createElement("li"); 
    item.innerHTML = "new"; 
    e.target.parentNode.insertBefore(e.target, item); 
    } 
}; 

Когда я нажимаю Ли Я получаю ошибку NotFoundError: DOM Exception 8: An attempt was made to reference a Node in a context where it does not exist. на линии с insertBefore. Я проверил с DevTools, и все кажется нормальным узлом, я понятия не имею, почему он не работает.

ответ

1

Порядок аргументов неверен. Сначала необходимо передать новый узел:

e.target.parentNode.insertBefore(item, e.target); 

See the MDN documentation.

+0

Спасибо, еще раз моя собственная глупость достала меня. Я просто понял это и собирался опубликовать свой собственный ответ. – Eschon

Смежные вопросы