• Почему оно не выводит текст?

    jessepinkman010101
    @jessepinkman010101
    Варю синий код
    а сам как думаешь ? это как сравнивать страницу с книгой
    Нужно обратиться к индексу элемента в массиве. Массив начинается с нуля, значит первый элемент это - 0, тогда нужно писать:
    if ($test == $gg[0]) {..}
    Ответ написан
    Комментировать
  • Как вывести массив в div?

    jessepinkman010101
    @jessepinkman010101 Автор вопроса
    Варю синий код
    Вот так решил, если кому-то интересно, но порожнему, Вы все еще можете предложить свой вариант и я буду рад и благодарен Вам!

    demo: https://jsfiddle.net/s4fqpLgc/ (если нажать на кнопку, то добавляется элемент с рандомным id, раньше если бы мы добавили еще один, то предыдущий элемент изменился так-как был-бы перендер всех элементов, но с данным решением - нет

    js

    const arr = [
        {id: 850, name: 'hello'},
        {id: 851, name: 'world'},
        {id: 852, name: 'hello'},
        {id: 853, name: 'john'},
        {id: 854, name: 'putin'},
    ];
    
    function render() {
        // .in-cart - класс модификатор, им мы будем помечать элементы которые уже имеются  на странице
    
    
        //сперва удаляем класс у всех элементов 
        $('.item').removeClass('in-cart');
      
      arr.forEach(item => {
         //помечаем элементы которые уже были отрендерены  
         $(`.item[data-id="${item.id}"]`).addClass('in-cart');
        
        //если элемента нет, то рендерим его
        if($(`.item[data-id="${item.id}"]`).length == 0) { 
           $('.list').append(`
            <span class="item in-cart" data-id="${item.id}">${item.name} id:${item.id}</sapn>
          `);
        }
      });
     
      //проходим по всем **не** помеченным элементам, так-как они лишние - удаляем 
      $('.item').each(function(){
        if(!$(this).hasClass('in-cart')) {
          $(this).remove();
        }
      });
    
    }
    
    render();
    
    arr.splice(3, 1);
    arr.push({id: 888, name: 'rov'});
    
    render();
    console.log(arr)
    
    $('.add').click(function(){
        var id = Math.floor(Math.random() * 500);
        arr.push({id: id, name: 'new ' + id});
      render();
    });
    console.log(arr)

    В итоге мы рендерим только новые элементы и избавляемся от надобности рендерит элементы снова. Это особенно помогает, когда у вас там инпуты, которы вы заполнили, потом добавили еще один элемент, а из-за того что оно рендерится снова все инпуты сбрасываются.

    Ответ WapSter в целом тоже решает проблему, но я решил изменить логику немного.
    Ответ написан
    Комментировать