Форум на Kuban.ru (http://forums.kuban.ru/)
-   Веб-дизайн и программирование (http://forums.kuban.ru/f1030/)
-   -   Как с пом. JS заменить элемент на другой, описанный динамически? (http://forums.kuban.ru/f1030/kak_s_pom_javascript_zamenit-_element_na_drugoj_opisannyj_dinamicheski-3306615.html)

ars_2007 14.11.2012 19:42

Как с пом. JS заменить элемент на другой, описанный динамически?
 
Есть произвольный элемент
<table><tr><td id="xxx">0</td><td>END</td></tr></table>
(может быть divm span, или любое другое)

надо создать, допустим, строку '<td>1</td><td>2</td>' и каким-то образом вставить вместо элемента c id xxx.
Т.е. должно выйти вот такое
<table><tr><td>1</td><td>2</td><td>END</td></tr></table>

как видим, элемент c id xxx вообще исчез, и вместо него подставилось то, что было в строке.

Как такое сделать? Важно: createElement не совсем катит, т.к. там надо прописывать имя тэга, а мы заранее не знаем, что там будет в динамической строке. Может там даже просто текст будет.
Вот такое. Чешу репу уже долго....

ars_2007 14.11.2012 19:52

Мдя... это не стэк_переволнен, где ответы появляются еще до обновиления страницы....... =))

brezhnev 14.11.2012 23:15

[url]http://web-color.org/public/jQuery.djvu[/url] страница 134

ars_2007 14.11.2012 23:54

с пом. [u][b]JS[/b][/u]

vk 15.11.2012 04:18

[quote=brezhnev;27644487]7-Гавайские субтитры >тогда только - разбор того что нужно вставить, далее сравнение с базой, далее снова на форум[/quote]
=))
Ну не парьтесь с велосипедом (или граблями?) изучайте [b]И[/b] jQuery

lublurtk 15.11.2012 09:05

3-Гавайские субтитры > жесть....
на jQuery будет что-то типа :
jQuery("#xxx").after("<td>1111</td>");
jQuery("#xxx").remove();

ars_2007 15.11.2012 18:57

5-lublurtk >
надо на js, jq ковырять не хоцца.
Тут наверное надо что-то типо outerHTML, токо оно не кроссбравзерное походу.

lublurtk 15.11.2012 21:03

6-Гавайские субтитры >а что там ковырять?)
почти все ф-ции jQuery кроссбраузерные)

[url]http://jsfiddle.net/YPP4y/[/url]

ars_2007 15.11.2012 22:27

Жаль тут нету крупного шрифта.

Втретий раз:[b] НАДО НА JS[/b]

Уточняю (для тех кто считает что фреймворк это и есть JS): [b]НАДО НА ЧИСТОМ JS[/b]

lublurtk 15.11.2012 22:49

8-Гавайские субтитры >[em]для тех кто считает что фреймворк это и есть JS[/em] - а что это?
CI, Yii это не пхп ?)

напиши сюда [url]http://javascript.ru/forum/[/url]

Kuba 15.11.2012 23:36

Js - он везде чистый, грязный только код написанный кривыми руками.

а тебе надо [b]НАТИВНЫЙ JS[/b]

Kuba 15.11.2012 23:45

[quote=Гавайские субтитры;27728673]jq ковырять не хоцца.[/quote] лучше ждать пока кто то за тебя скопирует от туда 10 строк кода с ключом "after/before" и "remove" и вставит сюда??

ars_2007 15.11.2012 23:47

[quote=Kuba;27732346]а тебе надо НАТИВНЫЙ[/quote]
(листая словарики): а ты, уважаемый, ничего тяжолого не нюхал перед тем как этот пост писать?

ars_2007 15.11.2012 23:47

[quote=Kuba;27732417]лучше ждать пока кто то за тебя скопирует от туда 10 строк кода с ключом "after/before" и "remove" и вставит сюда??[/quote]
иди глянь на тот replaceWith и ты поймешь, почему не хоцца. =))

dolg 17.11.2012 16:03

<table id="mytab"> ... </table>
<script type="text/javascript">
document.getElementById('mytab').innerHTML='<tr><td> Вставляй, что угодно </td></tr>';
</script>

ars_2007 17.11.2012 20:37

14-dolg >
мдя... =))

ЗЫ
Все, пацаны, вопрос снимается, т.к. разобралсо сам.
Чуть пожже дам кроссбраузерное решение.

ars_2007 17.11.2012 21:40

[url]http://stackoverflow.com/questions/13388379/js-how-to-replace-html-element-with-another-element-text-represented-in-string[/url]
первый ответ - кроссбравзерное решение

dolg 17.11.2012 23:02

15-Гавайские субтитры >
"createElement не совсем катит", "jq ковырять не хоцца", "надо что-то типо outerHTML" - твои слова. Что-то не устраивает?

ars_2007 18.11.2012 00:29

[quote=dolg;27757932]"createElement не совсем катит"[/quote]
createElement, в плане "tmp=createElement("div"); tmpюinnerHTML=str" - да. не катит.
Не надо вырывать фразы из контекста. Некрасиво. И даже неприлично.

[quote=dolg;27757932]надо что-то типо outerHTML[/quote]
да. Надо что-то типо outerHTML.
только кроссбравзерное.
Что-то не устраивает? =))

dolg 18.11.2012 01:13

18-Гавайские субтитры>
Я предложил тебе простое решение. А ты мдякаешь и ещё меня обвиняешь в неприличности и дразнишь моим же вопросом. Следи за своими словами.

ars_2007 18.11.2012 01:24

[quote=dolg;27758632]Я предложил тебе простое решение[/quote]
будь добр, перечитай сабж. Твой innerHTML к сабжу не имеет никакого отношения, т.к. менять надо не inner, а весь элемент. =))

dolg 18.11.2012 01:47

Что значит, "менять надо не inner"? Что такое inner?

ars_2007 18.11.2012 01:51

Хм..
похоже, ты не шутишь.
Ладно.
Бывает.

dolg 18.11.2012 01:54

Ну скажи, мне интересно

dolg 18.11.2012 01:58

Что ты подразумеваешь под "inner"? Это новое понятие JS?

ars_2007 18.11.2012 01:58

23-dolg >
чего тут еще говорить?
Мне над было outerHTML, а не innerHTML. Ты не знаешь какая между ними разница?

dolg 18.11.2012 02:09

Знаю, первый не перезаписывает разметку, а добавляет. Но он не кроссбраузерный.
Просто я знаю, что у элемента есть атрибуты, предки, потомки.
А что такое inner?

dolg 18.11.2012 02:11

Столько элементов видел через console.log(). Но inner ни разу не встречал

ars_2007 18.11.2012 02:11

[quote=dolg;27758707]Знаю, первый не перезаписывает разметку, а добавляет.[/quote]
ясно.
Давайдосвидания.

[quote=dolg;27758707]А что такое inner?[/quote]
inner is the opposite to outer =)))))

dolg 18.11.2012 02:23

Свойство innerHTML для любого элемента имеет в качестве значения строку, содержащую HTML-код, заключенный между открывающим и закрывающим тегами элемента. Иначе говоря, innerHTML содержит внутренний HTML-код контейнера элемента. Присвоение этому свойству нового значения, содержащего HTML-код, приводит к интерпретации этого кода. Разумеется, новое значение может и не содержать тегов.

Свойство outerHTML аналогично свойству innerHTML, но отличается тем, что содержит весь HTML-код, включая внешние открывающий и закрывающий теги элемента.

Первое, что нашёл [url]http://it.kgsu.ru/JS/js0053.html[/url]
Давайдосвидание, пустослов

ars_2007 18.11.2012 02:28

29-dolg >
вот про это и речь. =)
И нефиг тут про innerHTML с умным видом рассусоливать, тем более если спрашивали не про него =))

dolg 18.11.2012 10:05

Просто не оперируют такими понятиями inner, outer. Есть потомки, есть предки, есть элемент. Производители браузеров считают правильным не перезаписывать элемент через обращение к нему самому.
Если в твоем случае нужно что-то вставить вместо таблицы, обращаешься с этим же свойством к предку.
И поверь, в библиотеках JS с innerHTML много что делается.

ars_2007 18.11.2012 17:43

31-dolg >
ваще-то в сабже было предельно ясно поставлена задача, и до "Тут наверное надо что-то типо outerHTML" ты таки дочитал.
Посему вопрос: [b]при чем тут твой innerHTML[/b], если надо заменить весь элемент? =))


Текущее время: 05:06. Часовой пояс GMT +3.