#javascript #html
#javascript #HTML
Вопрос:
Я работаю над проектом JavaScript, в котором пользователь может нажать кнопку, чтобы создать текстовый элемент. Однако мне также нужна функция, при которой я могу нажать другую кнопку, и элемент, созданный совсем недавно, будет удален, поэтому, другими словами, я хочу иметь возможность нажать кнопку, чтобы создать элемент, и нажать другую кнопку, чтобы отменить это действие.
Проблема, с которой я столкнулся, заключалась в том, что я создал элемент, затем я бы удалил элемент, используя: element.parentNode.removeChild(element);
, но это очистило бы все элементы, которые были созданы в одной и той же переменной.
var elem = document.createElement("div");
elem.innerText = "Text";
document.body.appendChild(elem);
Этот код позволяет создавать элемент нажатием кнопки. Все элементы, которые будут созданы, находятся в переменной «elem». поэтому, когда я удаляю элемент «elem», все элементы очищаются.
Есть ли простой способ удалить один элемент за раз, который был создан процедурно?
Спасибо за любую помощь
Комментарии:
1. Поместите на них класс, возьмите их все по классу, возьмите последний, а затем удалите его.
2. » это очистило бы все элементы, которые были созданы под одной и той же переменной «. Нет, это очистило бы только последний созданный элемент, в этой переменной вы можете одновременно хранить одно значение, она не может содержать несколько значений.
3. Скриншот был бы отличным, поскольку на этот счет есть разные мнения.
Ответ №1:
Когда вы создаете элементы, укажите a class
. Если вы хотите удалить элемент, просто возьмите последний элемент className
и удалите его.
Приведенный ниже фрагмент демонстрирует это —
for(let i = 0; i<5; i ){
var elem = document.createElement("div");
elem.innerText = "Text " i;
elem.className = "added";
document.body.appendChild(elem);
}
setTimeout(function(){
var allDivs = document.getElementsByClassName("added");
var lastDiv = allDivs.length-1;
document.body.removeChild(allDivs[lastDiv]);
}, 3000);
Ответ №2:
Я бы, вероятно, использовал querySelector
s, чтобы захватить последний элемент:
// optional
// this is not needed it's just a random string added as
// content so we can see that the last one is removed
function uid() {
return Math.random().toString(36).slice(2);
}
document.querySelector('#add')
.addEventListener('click', (e) => {
const elem = document.createElement('div');
elem.textContent = `Text #${uid()}`;
document.querySelector('#container').appendChild(elem);
// optional - if there are elements to remove,
// enable the undo button
document.querySelector('#undo').removeAttribute('disabled');
});
document.querySelector('#undo')
.addEventListener('click', (e) => {
// grab the last child and remove
document.querySelector('#container > div:last-child').remove();
// optional - if there are no more divs we disable the undo button
if (document.querySelectorAll('#container > div').length === 0) {
document.querySelector('#undo').setAttribute('disabled', '');
}
});
<button id="add">Add</button>
<button id="undo" disabled>Undo</button>
<div id="container"></div>