Javascript.RU

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

Странное поведение innerHTML
Вопрос знатокам на засыпку.

Есть код:
Код:
<html>
<body>
<div id='printDiv'></div>
<script>

var var0 = 'Test';

// тег <i> работает
printDiv.innerHTML+="<i>"+var0+"</i> ";

// тег <i> не работает
printDiv.innerHTML+="<i>";
printDiv.innerHTML+=var0;
printDiv.innerHTML+="</i>";

</script>
</body>
</html>
Почему во втором случае тег <i> не работает? Естественно, вместо <i> может быть что угодно.
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2012, 11:28
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

innerHTML работает с DOM а не просто вставляет текст в документ-соответтвенно незаконченные элементы такие как <i> игнорирует
с помощью innerHTML+ не рекомендую вставлять ибо некоторые события при этом у других элементов могут пропасть
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2012, 11:31
Новичок на форуме
Отправить личное сообщение для DoubleDragon Посмотреть профиль Найти все сообщения от DoubleDragon
 
Регистрация: 10.08.2012
Сообщений: 4

Хорошо, а какой же выход есть в данном случае? У меня текст в printDiv составляется из нескольких независимых частей, каждая из которых не знает о содержании других. Т.е. интересует, как отформатировать текст (в данном случае var0)?
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2012, 11:34
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от DoubleDragon Посмотреть сообщение
Хорошо, а какой же выход есть в данном случае? У меня текст в printDiv составляется из нескольких независимых частей, каждая из которых не знает о содержании других. Т.е. интересует, как отформатировать текст (в данном случае var0)?
а в какую-то переменную нельзя сначала собрать?
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2012, 11:38
Новичок на форуме
Отправить личное сообщение для DoubleDragon Посмотреть профиль Найти все сообщения от DoubleDragon
 
Регистрация: 10.08.2012
Сообщений: 4

Нет, это парсер независимых частей. Всё работает, а с этой промблемой я уже намучался. Может во что-то оборачивать var0 и через стили устанавливать форматирование? Будет это работать?
Ответить с цитированием
  #6 (permalink)  
Старый 10.08.2012, 11:43
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от DoubleDragon Посмотреть сообщение
Нет, это парсер независимых частей. Всё работает, а с этой промблемой я уже намучался. Может во что-то оборачивать var0 и через стили устанавливать форматирование? Будет это работать?
если <span id='a1'>var0</span> то потом через стили можно задать
Ответить с цитированием
  #7 (permalink)  
Старый 10.08.2012, 11:45
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

DoubleDragon, а почему бы вам не воспользоваться DOM?
<html>
<body>
<div id='printDiv'></div>
<script>
var var0 = 'Test';

var i = document.createElement("i");
i.appendChild(document.createTextNode(var0));
document.getElementById("printDiv").appendChild(i);
</script>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 10.08.2012, 12:34
Новичок на форуме
Отправить личное сообщение для DoubleDragon Посмотреть профиль Найти все сообщения от DoubleDragon
 
Регистрация: 10.08.2012
Сообщений: 4

Да, DOM тоже вариант. Но мой пример сильно упрощённый. Реальность гораздо сложнее.
В любом случае спасибо за идею.
Ответить с цитированием
  #9 (permalink)  
Старый 10.08.2012, 13:30
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от DoubleDragon Посмотреть сообщение
Да, DOM тоже вариант. Но мой пример сильно упрощённый. Реальность гораздо сложнее.
В любом случае спасибо за идею.
Если получится делайте с DOM
Ответить с цитированием
  #10 (permalink)  
Старый 10.08.2012, 16:09
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от vadim5june
innerHTML работает с DOM а не просто вставляет текст в документ-соответтвенно незаконченные элементы такие как <i> игнорирует
он их закрывает, поэтому закрывающую часть можно и не прописывать
<div id='printDiv'></div>
<script>
window.onload = function () {
	var printDiv = document.getElementById('printDiv');
	var var0 = 'Test';
	
	printDiv.innerHTML+="<i>" + var0;
	alert(printDiv.innerHTML);
	
	printDiv.innerHTML+="<i>";
	alert(printDiv.innerHTML);
	
	printDiv.innerHTML+=var0;
	alert(printDiv.innerHTML);
}
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
insertBefore и insertAfter странное поведение с html Viper jQuery 0 07.02.2012 17:36
Странное поведение Dojo. Kuzya59 Dojo toolkit 4 15.10.2011 15:42
Странное поведение переменной mycoding Серверные языки и технологии 4 14.01.2011 19:18
странное поведение innerhtml alexsum Общие вопросы Javascript 6 24.09.2010 16:17
Странное поведение replace cooli0 Общие вопросы Javascript 4 25.01.2010 17:16