Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.04.2010, 11:11
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Удаление отдельного элемента с масива
ВСем доброго времени суток. Возникла такая проблема. Есть 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-й блок создает список (если не ошибаюсь) а второй удаляет. Нужна функция которая будет удалять конкретный элемент массива. Помогите плиз))
Ответить с цитированием
  #2 (permalink)  
Старый 06.04.2010, 11:37
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Вы знакомы с delete, который и занимается удалением. А для того, чтобы удалить конкретный элемент массива, вам надо только знать его индекс. Вот и найдите его.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #3 (permalink)  
Старый 06.04.2010, 12:31
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Массива, или HTML-коллекции?

Для первого используйте splice.
Для второго — removeChild
Ответить с цитированием
  #4 (permalink)  
Старый 06.04.2010, 12:33
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Понял спасибо. Попробую, Результат скажу
Ответить с цитированием
  #5 (permalink)  
Старый 06.04.2010, 12:39
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Сообщение от subzey
Массива, или HTML-коллекции?
В чем разница?
Не пойму как все таки узнать индекс определенного элемента. у меня же там в цикле все выводится li.innerHTML = metroArr[i];. [i] насколько я понимаю и есть индекс. и как в этой ситуации применить splice ?
Ответить с цитированием
  #6 (permalink)  
Старый 06.04.2010, 13:14
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Можно немного кода?
Ответить с цитированием
  #7 (permalink)  
Старый 06.04.2010, 13:54
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Вместо
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); 
}

Правда, непонятно, зачем удалять из массива элементы по одному, когда это можно сделать в конце?
Ответить с цитированием
  #8 (permalink)  
Старый 06.04.2010, 14:11
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Мда. Тут оказывается простым удалением строки из списка не прокатит. Буду узнавать id конкретного объекта. О результатах скажу
Ответить с цитированием
  #9 (permalink)  
Старый 06.04.2010, 17:11
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от SkyLight
Вы знакомы с delete, который и занимается удалением
не надо использовать операторы, предназначенные для Object, тем более что у массивов есть свои средства

Сообщение от Suharik
В чем разница?
в первом нету removeChild, во втором splice
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
Центрирование элемента относительно центра другого элемента idrozd jQuery 1 27.01.2010 13:32
удаление DOM элемента и перезагрузка страницы Andrey2005 Общие вопросы Javascript 3 12.10.2009 23:49
Обновление элемента на странице ajax-ом Urfin jQuery 1 24.07.2009 18:40
удаление Элемента из ХТМЛ Tinvul Events/DOM/Window 19 15.07.2009 13:59