#javascript #html
Вопрос:
Я пытаюсь использовать чистый JS (не jquery), чтобы добавить <del>
внутреннюю <div>
часть, которая обертывает текст «abc»
Для практических целей мне не разрешается использовать метод innerHTML, встроенный CSS или jquery и т. Д. обычный Джей си.
<html>
<div class='todo'>abc</div>
</html>
моя попытка.
const todo = document.querySelector('.todo')
const del = document.createElement('del')
todo.appendChild(del)
Но все закончилось тем, что
<div class='todo'>abc <del></del></div>
.
Я бы хотел, чтобы у меня
<div class='todo'><del>abc</del></div>
.
Ответ №1:
Вы можете сделать короткий трюк, чтобы достичь этого:
1) Добавить textContent
todo
в del
«ы textContent
«.
del.textContent = todo.textContent;
2) Удалите textContent
из todo
.
todo.textContent = "";
3) Добавляйте del
как ребенок.
todo.appendChild(del)
const todo = document.querySelector('.todo')
const del = document.createElement('del')
del.textContent = todo.textContent;
todo.textContent = "";
todo.appendChild(del)
<div class='todo'>abc</div>
Ответ №2:
Вы можете использовать метод внутреннего текста
const todo = document.querySelector('.todo')
const del = document.createElement('del')
del.innerText = todo.innerText
todo.innerText = ""
todo.appendChild(del)
Ответ №3:
Перемещение содержимого — экономит его удаление
const todo = document.querySelector('.todo')
const del = document.createElement('del')
del.append(todo.firstChild)
todo.appendChild(del)
<div class='todo'>abc</div>
Или проще
const todo = document.querySelector('.todo')
todo.innerHTML = todo.textContent.strike()
<div class='todo'>abc</div>