Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2023, 18:12
Новичок на форуме
Отправить личное сообщение для nail2010 Посмотреть профиль Найти все сообщения от nail2010
 
Регистрация: 21.09.2022
Сообщений: 9

Не работает замена элементов на фрагмент
Друзья, почему не работает этот код:

let tt = document.getElementById("1234");
let frag = document.createDocumentFragment();
frag.innerHTML = tt.innerHTML;
tt.replaceWith(frag);


Элемент удаляется и все...
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2023, 18:19
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

У фрагмента нет свойства innerHTML.

Не очень понятно, что ты тут вообще пытаешься сделать и зачем?

Так чтобы работало, это можно сделать подобным образом:
let tt = document.getElementById("1234");
tt.outerHTML = tt.innerHTML;
но это очень плохой код, т.к потеряются все обработчики на детях.

Код по-лучше так(но всё ещё не понятна цель):
let tt = document.getElementById("1234");
let frag = document.createDocumentFragment();
frag.append(...tt.childNodes);
tt.replaceWith(frag);
или, проще, так:
let tt = document.getElementById("1234");
tt.replaceWith(...tt.childNodes);
__________________
29375, 35

Последний раз редактировалось Aetae, 15.09.2023 в 18:36.
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2023, 18:36
Новичок на форуме
Отправить личное сообщение для nail2010 Посмотреть профиль Найти все сообщения от nail2010
 
Регистрация: 21.09.2022
Сообщений: 9

Благодарю за ответ! Мне нужно удалить родительский элемент, оставив его содержимое, например:

<div><p>text</p></div>
<div>text</div>
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2023, 18:41
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Ещё можно через css сделать элементу:
display: contents;

удалён он не будет, но вести себя станет так как будто его нет.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2023, 18:59
Новичок на форуме
Отправить личное сообщение для nail2010 Посмотреть профиль Найти все сообщения от nail2010
 
Регистрация: 21.09.2022
Сообщений: 9

Нет, так не подходит мне.. Дело в том, что я пишу небольшой редактор текста, у которого ограниченный набор стилей, ну то есть можно сделать только пару заголовков, курсив, жирный и подчеркнутый, примерно так и есть кнопка "сделать простым текстом"... Все это в редактируемом контейнере DIV, отправляется AJAXом на сервер и там уже парсится HTML-код...

Все бы отлично, но хочется сделать все по уму и защиту от дураков, это когда выделяют половину заголовка и половину другого тега, приходится их изменять на простой текст, как правило целиком... Вот и получается у меня на выходе тег HTML, из которого нужно выдергнуть все содержимое и поставить вместо этого тега..
Ответить с цитированием
  #6 (permalink)  
Старый 16.09.2023, 07:07
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Так еще можно

let tt = document.getElementById("1234");
tt.before(...tt.childNodes);
tt.remove();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена не работает kozhin2012 Общие вопросы Javascript 0 08.10.2015 15:42
Не работает скрипт перемещения элементов regnised jQuery 7 03.09.2015 14:08
Изменение позиции элементов с помощью jquery не работает в IE6-8 ditasandditas Internet Explorer 0 15.08.2011 17:53
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
ява-скрипт выборочно работает-не работает zeta777 Internet Explorer 0 20.01.2010 11:41