|
|
|
| Здравствуйте,
столкнулся с непонятной проблемой...
есть
в него пытаюсь вставить на ajax
old_text + </div><div>more text
|
в результате вместо
<div id="100">text</div><div>more txt</div>
|
получаю
<div id="100">text<div>more txt</div></div>
|
что за чушь?
какая ерунда парсит и типа исправляет код??? | |
|
|
|
|
|
|
|
для: moonfox
(23.06.2011 в 11:43)
| | А чем вставляете? JavaScript? | |
|
|
|
|
|
|
|
для: cheops
(23.06.2011 в 11:53)
| | простой пример
<script>
function show()
{
document.getElementById(100).innerHTML = document.getElementById(100).innerHTML + '</div><div>yes';
}
</script>
<div id="100">
lol
</div>
<a onclick="show();">show</a>
|
выдает
<div id="100">
lol
<div>yes</div></div>
|
| |
|
|
|
|
|
|
|
для: moonfox
(23.06.2011 в 11:58)
| | innerHTML - свойство конкретного тега <div>.
Описывает всё то, что входит между символом > открывающего тега и символом < закрывающего.
По определению <div> и </div> этого конкретного тега после любых пертурбаций с innerHTML должны остаться на своих местах и по-прежнему должны принадлежать этому же конкретному тегу.
Своим скриптом Вы хотите создать новый тег <div>, не имеющий НИКАКОГО отношения к конкретному тегу, а лишь следующий за ним.
Браузер пытается исправить Вашу ошибку. | |
|
|
|
|
|
|
|
для: Абырвалг
(23.06.2011 в 14:37)
| | что делать ?)))
мне не подходит див внутри основного дива , мне после него .... | |
|
|
|
|
|
|
|
для: moonfox
(23.06.2011 в 15:35)
| | Кроссбраузерно будет так:
<script>
function show()
{
//создаём новый тег и заполняем его нужным текстом
var NewTag = document.createElement ('div');
var TextInNewTag = document.createTextNode ('yes');
NewTag.appendChild (TextInNewTag);
//определяем тег, ЗА которым будет следовать новый
var OldTag = document.getElementById ('d100')
//вставляем новый тег
OldTag.parentNode.insertBefore (NewTag, OldTag.nextSibling);
}
</script>
<div id="d100">
lol
</div>
<span onclick="show();">show</span>
|
И никогда не назначайте для id значение, начинающееся с цифры.
Пётр Великий - он "Пётр Первый", а не "Первый Пётр" | |
|
|
|
|
автор: 0987654 (23.06.2011 в 16:12) |
|
|
для: Абырвалг
(23.06.2011 в 15:58)
| | см. ответ | |
|
|
|
|
|
|
|
для: Абырвалг
(23.06.2011 в 15:58)
| | спасибо
все работает ,
один вопрос
почему
var TextInNewTag = document.createTextNode ('<p>yes</p>');
возвращает html сущности вместо тэгов? | |
|
|
|
|
|
|
|
для: moonfox
(23.06.2011 в 16:58)
| | Потому что метод createTextNode создаёт ТЕКСТ, что и видно из названия - createTextNode
Чтобы вставить HTML, можно воспользоваться как любимым Вами свойством innerHTML:
var NewTag = document.createElement ('div');
NewTag.innerHTML = '<p>yes</p>';
|
А можно и продолжить использовать DOM-методы:
var NewTag = document.createElement ('div');
var TagInNewTag = document.createElement ('p');
var TextInNewTag = document.createTextNode ('yes');
TagInNewTag.appendChild (TextInNewTag);
NewTag.appendChild (TagInNewTag);
|
Второе - предпочтительнее, ибо работает быстрее. | |
|
|
|
|
автор: 0987654 (23.06.2011 в 23:38) |
|
|
для: Абырвалг
(23.06.2011 в 17:24)
| | См. ответ | |
|
|
|