2015-01-08 2 views
1

У меня есть некоторое содержимое HTML внутри переменной JavaScript:Как удалить пробел между тегами html с помощью javascript?

var string="<tr> <td> data 1 </td> <td> data 2 </td> <td> data 3 </td></tr>"; 

Я хочу, чтобы удалить пробелы только между HTML-теги. Белое пространство в данных столбцов должно оставаться таким же.

string.replace(/\n/g, ""); 
string.replace(/[\t ]+\</g, "<"); 
string.replace(/\>[\t ]+\</g, "><"); 
string.replace(/\>[\t ]+$/g, ">"); 

Я пробовал вышеуказанный код. Но это не сработало. Кто-нибудь, пожалуйста, помогите мне решить эту проблему.

+0

Вы пытаетесь удалить первый и последний пространство ваших 'строк = Var» данные 1 данные 2 данные 3 „' так, что он становится 'вар строка =“ данные 1 данные 2 данные 3" ' – Kinnectus

+0

Ровно какие пространства вы хотите удалить? Все пробелы в строке в вашем примере находятся между тегами (по крайней мере, между первым тегом «» и последним тегом ''). И почему*? Вероятно, вы неправильно проанализировали какую-то проблему. –

ответ

0

Игнорирование < и> символов внутри текстовых узлов:

var string = "<p>lol</p> <p>let's remove <span>spaces between tags</span> </p>"; 
var rexp = new RegExp(">[\t\s ]*<", "g"); 
var result = string.replace(rexp, "><"); 

Js скрипку здесь: http://jsfiddle.net/4cfgnfrx/

с вашим примером: http://jsfiddle.net/4cfgnfrx/1/

3

Там есть решение JQuery:

Использование .contents() и .filter(), чтобы найти все текстовые узлы и ремо ве() их, как это:

var $e = $("<tr> <td> data 1 </td> <td> data 2 </td> <td> data 3 </td></tr>"); 
 
$e.contents().filter(function() { 
 
    return this.nodeType = Node.TEXT_NODE && /\S/.test(this.nodeValue) === false; 
 
}).remove(); 
 
console.log($e.html()); 
 
// <td> data 1 </td><td> data 2 </td><td> data 3 </td>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
Check console!

В приведенном выше примере фильтры детей tr. Тем не менее, также можно проверять потомков или принимать сложные решения, такие как сохранение пробелов между встроенными элементами, но удаление между элементами блока.

Смежные вопросы