Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Создание элемента с заменой (https://javascript.ru/forum/dom-window/16943-sozdanie-ehlementa-s-zamenojj.html)

greatilya 29.04.2011 14:48

Создание элемента с заменой
 
Имеется следующий код страницы:
<ul>
<li class="add">Строка 1</li>
<li id="element1" class="add">Строка 2</li>
<li class="add">Строка 3</li>
<li class="add">Строка 4</li>
<li class="add">Строка 5</li>
</ul>

Далее у меня в JS скрипте имеется переменная которая содержит HTML одного пункта:
var a = '<li id="element1" class="del">Строка 2 измененная</li>';

К странице подключена библиотека MooTools. Необходимо заменить вторую строку в списке (как видно у них id одинаковые, изменяется только class и контент <li />, только контент там будет посложнее, с кучей вложенных тегов).

Я представляю следующее решение вопроса:
1) создать элемент(объект) на базе HTML кода, как то так:
var newLi=createByHTML('код')
вот только проблема в том что не нашел способа как это сделать.
2) заменить старую строку на созданый элемент. Тоже не знаю как это сделать.

Еще конечно можно регуляркой это сделать.
Подскажите как решить данную задачку.

Serg_pnz 29.04.2011 15:00

А почему не переназначить класс и не поменять содержимое внутри?

greatilya 29.04.2011 16:47

Да, это было бы логично, но много кода лопатить придется на РНР, т.к. много скриптов используют именно такой вариант передачи.
А функции типа предложенной мною createByHTML не существует?

melky 29.04.2011 17:21

Цитата:

создать элемент(объект) на базе HTML кода, как то так:
var newLi=createByHTML('код')
что????

поподробнее

"создать элемент" - значит записать в переменную чтото с типом HTMLElement ( ну,например HTMLDivElement )

если я опять неверно понял,то

создание новых элементов делается через метод...

var t = document.createElement("li");
....
t.className = "add";
......
document.body.appendChild( t );

Serg_pnz 29.04.2011 18:06

тогда
1. Переиначиваем id старого элемента, скажем на element1bad
2.
var el1 = new Element ( 'div' , { 'id' : 'element1'});//создаем элемент
el1.injectTop($('element1bad')); //вставляем, код может отличаться в зависимости от версии mootools

3. Удаляем element1bad

dmitriymar 29.04.2011 19:01

innerHTML отменили для смены содержимого?


<head>
</head>
<body>
<ul>
<li class="add">Строка 1</li>
<li id="element1" class="add">Строка 2</li>
<li class="add">Строка 3</li>
<li class="add">Строка 4</li>
<li class="add">Строка 5</li>
</ul>
<script>
document.getElementById("element1").innerHTML="STROKA";
</script>
</body>


о смене класса вообще молчу...
в первом ответе на тему был дан ответ.для чего велосипед городить?и причём переделка кода на рнр?

greatilya 01.05.2011 09:23

Serg_pnz,
Спасибо, хорошая идея!

dmitriymar 01.05.2011 09:53

а есть ещё outerHTML и outerText какие избавляют от гемора с созданием и удалением элементов
http://js-help.net/text/objeknaya_mo.../innertext.php


Часовой пояс GMT +3, время: 21:26.