Удаление отдельного элемента с масива
ВСем доброго времени суток. Возникла такая проблема. Есть 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, время: 00:16. |