@ya_yshel_rabotati_v_teleg

Как изменить сам тег с помощью js (jq)?

Есть
<table class="all_content_in">
<td class="menu_left">
</.....

а нужно чтоб стало (При определенном условии)
<div class="all_content_in">
< div class="menu_left">
</.....
  • Вопрос задан
  • 2233 просмотра
Решения вопроса 1
iiiBird
@iiiBird Куратор тега HTML
Пока ты спишь - твой конкурент совершенствуется
сам тег не поменять, но можешь изначально делать через div
<div class="all_content_in">
< div class="menu_left">
</.....

и задать стили display: table и display: table-cell
а потом уже через js менять их
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@void01
можно innerHTML + replace()
а там регулярными выражениями, хотя правильней создать нужные элементы перенести в них контент первичных, после чего первичные уничтожить
ну или
$(селектор первого дива).replaceWith($(''));
и так далее
заменить один тэг на другой в DOM невозможно так, что-бы сохранились все его свойства (евенты и прочая ересь)
Ответ написан
T_y_l_e_r
@T_y_l_e_r
можно написать код который будет менять содержимое самоуничтожением
var old_patch = document.getElementById("id");
old_patch.parentNode.removeChild(old_patch);


либо вытаскивать все целиком innerHTML и делать замену тегов через регулярные выражения

Вариантов много
Ответ написан
Finesse
@Finesse
У DOM-элемента невозможно изменить тэг. Можно только заменить старый элемент на новый, перенеся всё его содержимое. Например, так:

function replaceTag( element, newTag )
{
    var elementNew = document.createElement( newTag );
    elementNew.innerHTML = element.innerHTML;

    Array.prototype.forEach.call( element.attributes, function( attr ) {
        elementNew.setAttribute( attr.name, attr.value );
    });

    element.parentNode.insertBefore( elementNew, element );
    element.parentNode.removeChild( element );
    return elementNew;
}


Функция не переносит слушатели событий. Возвращает новый элемент.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы