2011-01-16 6 views
1

После я выполняю следующее:Удвоение перерывы после удаления <br> и оставив только текст

var noTags = document.createElement("DIV"); 
noTags.innerHTML = html; 
noTags.textContent // <- I put this into any textarea 

и этот текст:

text test <br><br> this text 

Превращается в тексте:

text test 


this text 

Некоторые, как я получить дополнительный перерыв. И они продолжаются каждый раз, когда я делаю вышеупомянутый javascript. Пожалуйста, помогите :-(

+1

Я не могу реплицировать i .. http://jsfiddle.net/GFyuP/ – Chandu

+0

@Cybernate попробуйте HTML в моем ответе ниже. Я тоже не смог точно воспроизвести, но получил разные результаты в IE7 против Firefox 3.6.x –

ответ

3

Когда вы назначаете html свойству innerHTML, браузер интерпретирует эту строку на основе набора DOCTYPE для страницы. Вы будете во власти анализатора, который браузер реализовал для этого DOCTYPE и реализации браузера указанного стандарта; прочитайте еще один способ: «вам гарантированно получить разные результаты в разных браузерах».

При этом каждый браузер будет интерпретировать следующий HTML несколько иначе.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Testing textcontent</title> 
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" > 
</head> 
<body> 

<form action=""> 
<textarea id="onlyText" rows="5" cols="40"></textarea> 
<script type="text/javascript"> 
/*<![CDATA[*//*---->*/ 
var html = "text text <br><br> text"; 
var noTags = document.createElement("DIV"); 
noTags.innerHTML = html; 

// Retrieve text from html 
var textContent = ""; 
var oe = document.getElementById("onlyText"); 

if (oe.innerText == undefined) { 
    textContent = noTags.textContent; 
} else { 
    textContent = noTags.innerText; 
} 

alert("DEBUG: textContent = " + textContent); 


oe.innerHTML = textContent; 

/*--*//*]]>*/ 
</script> 
</form> 

</body> 
</html> 

Добро пожаловать в interwebs. Ваш код будет отличаться.

0

У вас есть два перерыва в там, почему бы вам не ожидаем, что две линии?

Перерывы обычно делается как один замкнутый тег, тоже. <br/> вместо <br>.

+0

В XHTML нужно использовать '
' (или '

', но это глупо ;-). Но в HTML, '
' не имеет конечного тега. См. Http://www.w3.org/TR/html401/struct/text.html#h-9.3.2.1 –

+0

@ Дана Бреслау верна. В своем текстовом выводе ОП заметил примечание EXTRA, которое он не мог объяснить. –

+0

Вы правы - я неправильно понял. Сожалею. – MikeTheReader