Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2011, 16:11
Интересующийся
Отправить личное сообщение для Detex Посмотреть профиль Найти все сообщения от Detex
 
Регистрация: 01.03.2011
Сообщений: 14

Поведение innerHTML
Добрый день. Проблема следующая:
При добавлении на страницу тегов с помощью innerHTML автоматически добавляется закрывающий тег к незакрытым. Т.е. если добавляю "<a>", получаю "<a></a>";
Как этого избежать? Есть ли альтернатива innerHTML?

P.S. Извиняюсь, по-моему я не там где надо тему создал.

Последний раз редактировалось Detex, 06.03.2011 в 16:37.
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2011, 16:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Никак не избежать.

Альтернатива для чего?
Ответить с цитированием
  #3 (permalink)  
Старый 06.03.2011, 16:41
Интересующийся
Отправить личное сообщение для Detex Посмотреть профиль Найти все сообщения от Detex
 
Регистрация: 01.03.2011
Сообщений: 14

Альтернатива для добавления тегов без автоматического их закрывания.
Т.е. добавляю "<a>" получаю "<a>".
Ответить с цитированием
  #4 (permalink)  
Старый 06.03.2011, 17:01
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

innerHTML - это innerHTML, оп парсится браузером, а нормальный браузер видя незакрытый тег сам его закрывает за неряхой.)

Если вы последовательно составляете строку, то составляйте её не выводя.
Пример: не правильно
*!*
el.innerHTML = '<a>';
el.innerHTML += 'bla bla bla';
el.innerHTML += '</a>';*/!*

Пример: правильно
text = '<a>';
text += 'bla bla bla';
el.innerHTML=text+'</a>';


Есть ещё один вариант, но он возможен только во время загрузки страницы и не будет работать как реакция на действия пользоваться, поскольку разбирается браузером сразу по ходу загрузки совместно с обычным html.
Пример: в особом случае
document.write('<a>');
document.write('bla bla bla');
document.write('</a>');
Ответить с цитированием
  #5 (permalink)  
Старый 06.03.2011, 17:25
Интересующийся
Отправить личное сообщение для Detex Посмотреть профиль Найти все сообщения от Detex
 
Регистрация: 01.03.2011
Сообщений: 14

text = '<a>';
text += 'bla bla bla';
el.innerHTML=text+'</a>';


Так не подходит. Мне нужно сделать так, чтобы строка появлялась постепенно, символ за символом, как буд-то печатает печатная машинка.
С простым текстом (без HTML тегов) всё отлично, но с текстом содержащим теги получается дёрганье, т.е. сначала прописывается < а затем исчезает. Вот код:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>JS</title>
<script language="JavaScript">
var htmlarchive,htmlout='',i=0,starttime;
function one()
{
	htmlarchive = document.getElementById('test').innerHTML;
	document.getElementById('test').innerHTML="";
	starttime = setInterval(echo,10);
}
function echo()
{
	i+=1;
	htmlout += htmlarchive.substring(i-1,i);
	document.getElementById('test').innerHTML = htmlout;
}	
</script>
</head>
<body onload="one()">
<div id="test">«На наш взгляд, <a href=''>иностранные военные</a> присутствия в Афганистане могут и должны предпринять более активные усилия в борьбе с наркопроизводством в этой стране, раз уж они практически взяли на себя ответственность за вопросы безопасности в Афганистане», - сказано в сообщении.</div>
</body>
</html>


Можно конечно шаг увеличить и тогда этого дёрганья не будет видно, но всё таки хотелось решить проблему.
Есть какие-нибудь идеи?

Последний раз редактировалось Detex, 06.03.2011 в 18:30.
Ответить с цитированием
  #6 (permalink)  
Старый 06.03.2011, 19:49
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Detex
с текстом содержащим теги получается дёрганье
Как вариант меняй угловые скобки на последовательность...
http://scriptic.narod.ru/html/symbol.htm
Ответить с цитированием
  #7 (permalink)  
Старый 06.03.2011, 20:02
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

не знаю,но по моему будет безобразно выглядеть вся затея если сначала будет в тексте часть тега отображаться(в качестве лишней информации) а потом когда он войдёт весь -стиль отображения текста в нём изменится
тем более -судя по тексту это какойто новостной ресурс-посетителям врядли будет интересно созерцать из каких запчастей состоит страница состоит страница. так что наверное стоит теги в паре сразу и внутри их текст по буквам показывать

Сообщение от Detex
но с текстом содержащим теги получается дёрганье, т.е. сначала прописывается < а затем исчезает. Вот код:
ну дак теги по частям только так и будут работать -других вариантов нет

Последний раз редактировалось dmitriymar, 06.03.2011 в 20:06.
Ответить с цитированием
  #8 (permalink)  
Старый 06.03.2011, 20:30
Интересующийся
Отправить личное сообщение для Detex Посмотреть профиль Найти все сообщения от Detex
 
Регистрация: 01.03.2011
Сообщений: 14

Цитата:
Как вариант меняй угловые скобки на последовательность...
С такими последовательностями теги не будут тегами.

dmitriymar, нет это не новостной ресурс, это я воткнул первый попавшийся текст.

Я просто надеялся, что в JS есть ещё какой нибудь метод вставить текст без парсинга браузером. Раз таковых нет, придётся изощряться.
Ответить с цитированием
  #9 (permalink)  
Старый 06.03.2011, 20:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Detex
С такими последовательностями теги не будут тегами.
Зато будет чёткий эфект "печатающей машинки"...
Ответить с цитированием
  #10 (permalink)  
Старый 06.03.2011, 20:56
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Detex
Я просто надеялся, что в JS есть ещё какой нибудь метод вставить текст без парсинга браузером. Раз таковых нет, придётся изощряться.
причём извращение ? если нужно вставлять с рабочими тегами-то скрипт ну никак не обойдёт работу с тегами нтмл. в твоём варианте вставлять только парные теги и внутри них текст по буквам печатать
что само по идее в реализации этого будет геморно
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
странное поведение innerhtml alexsum Общие вопросы Javascript 6 24.09.2010 16:17
Cтранное поведение viktod Общие вопросы Javascript 23 10.04.2010 00:37
innerHTML and z-index ViZ0R Общие вопросы Javascript 5 12.08.2009 10:28
Отменить поведение по умолчанию bool Общие вопросы Javascript 3 06.03.2009 16:59
ошибка с innerHTML Gekt0r Общие вопросы Javascript 15 21.08.2008 11:57