2013-09-11 1 views
1

У меня есть контейнер div с атрибутом под названием «Местоположение». В этом месте находится выбор стран, разделенных полутень. Я хотел бы захватить каждое из этих значений и вставить их в массив как отдельные элементы, а не одну длинную строку с точкой с запятой.Захватить все значения из атрибута и нажать на массив

<div class="item-container" location="United States; United Kingdom; France"></div> 

Однажды у меня есть такие, что я бы хотел их отсортировать, однако первая половина является самой важной.

Цените любую помощь.

+1

Вы могли бы быть заинтересованы в html5 пользовательских атрибутов данных: http://html5doctor.com/html5- custom-data-attributes/ – Amida

ответ

3
var element = document.querySelector('.item-container'); 
var locations = element.getAttribute('location').split('; '); // ["United States", "United Kingdom", "France"] 
locations.sort(); // ["France", "United Kingdom", "United States"] 

Как уже упоминалось, вы можете переименовать location в data-location и использование element.dataset.location для доступа к этой строке (IE 10+).

+0

Гораздо лучше, чем мой ответ. Может просто добавить вызов '.sort()' в конец. –

+0

@RichardDalton Я мог бы, но хотел бы выделить разницу между отсортированным и несортированным массивом. – Pavlo

+0

Это фантастика. Спасибо (и всем остальным) за то, что нашли время для ответа. – MegaTron

1

Я рекомендую вам использовать data- префикс для пользовательского атрибута, т.е.

HTML:

<div class="item-container" data-location="United States; United Kingdom; France"></div> 

HTML5 Data Attribute.

JS:

var div = document.querySelector('[data-location]'); 
var arr = div.getAttribute('data-location').split(';').sort(); 
console.log(arr); // [" France", " United Kingdom", "United States"] 

DEMO.

+0

Дополнительная скобка на второй строке является чрезмерной. – Pavlo

+0

Это сделать его доступным для 'sort'. –

+0

IMO, делает код менее читаемым для разработчика, знакомого с цепочкой. – Pavlo

1

Использование JQuery: http://jsfiddle.net/3ma9m/

var str = $('.item-container').attr('location'); 
var n = str.split(";"); 

$.each(n, function (key, value) { 
    $('.item-container').append(key + ": " + value + "<br />"); 
}); 
+0

Допустимое решение, если jQuery уже используется. Как насчет сортировки? – Pavlo

+0

Ответ Шейха Херы лучше и включает сортировку. Для получения дополнительной информации о sort(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray% 2Fsort –

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