2014-09-12 4 views
1

Итак, у меня есть очень простая HTML-страница под названием Terms.html. Вот результат:Анализ текстовых данных HTML в массиве javascript

Museums, Parks, Railroads and Trains, Shopping, Theatres 

и вот код:

<!DOCTYPE html> 
<html> 
<body> Museums, Parks, Railroads and Trains, Shopping, Theatres </body> 
</html> 

Теперь я использую JQuery $ метод .get получить эту HTML страницу:

<!doctype html> 
<html lang="en"> 
<head> 
<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> 
</head> 
<body> 
<script> 
var tags = [ "String1", "String2"]; 
$.get("Terms.html", function(data, status) { 
    <!-- --> 

    $(result).html(data); 
    alert("Status: " + status); 
}); 

</script> 

<p>Search terms are: <span id="displayterms"></span></p> 
<div id="result"><div> 

</body> 
</html> 

Я хочу сделать, это разобрать Museums, Parks, Railroads and Trains, Shopping, Theatres в отдельные строки и добавить их в мой массив var tags. Любые идеи о том, как я могу это сделать? Благодаря

ответ

0

С функцией разделенного: http://www.w3schools.com/jsref/jsref_split.asp

Это разделится на любой символ, который вы выбрали, в данном случае «»

tags = data.split(","); 
+0

Как я могу получить строку из HTML?- это фактический открытый текст или код для html? – user1282637

+0

@David Lounsbrough Это будет трюк. однако, поскольку он уже имеет метки в своем массиве и хочет добавить, вы должны, вероятно, сделать var var2 = data.split (,); foreach (var i = 0; i somethinghere

+1

Не забудьте указать пробелы после каждой запятой и удалить слово и. –

0

Если вам не нужно поддерживать версии IE старше 9, вы могли бы сделать что-то вроде этого:

var tags = document.body.textContent.split(',').map(
    function (s) { 
     return s.trim(); 
    } 
); 

document.body.textContent получает текст в теге тела. Это ограничивает поддержку вашего браузера, поскольку IE не имел этого до версии 9.

.split(',') берет строку и разбивает ее на свои составные части, возвращая массив.

.map() применяет функцию ко всему массиву, возвращаемому .split(','), и возвращает массив результатов. В этом случае мы используем его для вызова trim() для каждой строки в массиве, чтобы разделить ведущие и конечные пробелы. У IE не было методов Array.prototype.map или String.prototype.trim до версии 9, но их легко полифонировать. Это более сложная вещь textContent.

Затем массив, возвращаемый с map(), помещается в переменную tags.

1

Try:

var tags = ["String1", "String2"]; 
var str = "Museums, Parks, Railroads and Trains, Shopping, Theatres"; 
arr = $.map(tags.concat(str.split(',')), function(n) { return $.trim(n) }); 
console.log(arr); // Outputs the array ["String1", "String2", "Museums", "Parks", "Railroads and Trains", "Shopping", "Theatres"] 

jsFiddle example

Третья линия разделяет str на запятых, а затем использует функцию JQuery в .map(), чтобы обрезать пробелы.

0

Вместо хранения содержимого в формате HTML вы можете сохранить их в файле данных JSON.

Пример файла JSON данных (places.json):

{ 
    "Names": [ "Museums", "Parks", "Railroads and Trains", "Shopping", "Theatres"] 
} 

Затем, вы можете изменить свою страницу код:

<script> 
var tags = [ "String1", "String2"]; 
$.getJSON("/places.json", function(data) { 
    $(result).html(data); 
    console.log(data.Names[0]); // Outputs Museums 
    $.each(data.Names, function(index, value) { 
     tags.push(value); // add the tag to your tags list for each item in Names 
    }); 
}); 

</script> 

Таким образом, вы можете хранить только данные, необходимые и вам не нужно вручную анализировать HTML.

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