Удаление отдельного элемента с масива
ВСем доброго времени суток. Возникла такая проблема. Есть 2 функции, одна делаем вывод списка из массива, а другая (при клике) удаляет весь список. Задача удалять конкретные элементы массива а не весь. вот код:
q2000.search.addMetro = function() {
var self = this;
var list = document.getElementById('metroList');
list.innerHTML = '';
if (metroArr.length > 0) {
for (var i in metroArr) {
var li = document.createElement('LI');
li.innerHTML = metroArr[i];
list.appendChild(li);
}
}
};
q2000.search.clearMetro = function() {
var self = this;
var form = document.getElementById('search_obj');
for (var i in metroArr) {
document.getElementById("pp"+i).style.display = 'none';
form.removeChild(document.getElementById("metro_id_"+i));
$('#metro_item'+i).addClass('selected');
delete metroArr[i];
}
$('#removeM').click();
self.addMetro();
self.load();
return false;
};
Как видно из кода, 1-й блок создает список (если не ошибаюсь) а второй удаляет. Нужна функция которая будет удалять конкретный элемент массива. Помогите плиз)) |
Вы знакомы с delete, который и занимается удалением. А для того, чтобы удалить конкретный элемент массива, вам надо только знать его индекс. Вот и найдите его.
|
|
Понял спасибо. Попробую, Результат скажу
|
Цитата:
Не пойму как все таки узнать индекс определенного элемента. у меня же там в цикле все выводится li.innerHTML = metroArr[i];. [i] насколько я понимаю и есть индекс. и как в этой ситуации применить splice ? |
Можно немного кода?
|
Вместо
if (metroArr.length > 0) {
for (var i in metroArr) {
var li = document.createElement('LI');
li.innerHTML = metroArr[i];
list.appendChild(li);
}
}
лучше сделать
for (var i = metroArr.length; i--; ) {
var li = document.createElement('LI');
li.innerHTML = metroArr.splice(i,1);
list.prependChild(li);
}
Правда, непонятно, зачем удалять из массива элементы по одному, когда это можно сделать в конце? |
Мда. Тут оказывается простым удалением строки из списка не прокатит. Буду узнавать id конкретного объекта. О результатах скажу
|
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 03:50. |