Javascript.RU

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

Замена значений в строке
Здравствуйте, не могу разобраться с одной проблемой.


Внутри HTML :
<ul class="add_ing_list">
    <li data-ord="25" data-id="1"><span class="count_ing"></span>Сыр (25 ₴)</li>
    <li data-ord="30" data-id="2"><span class="count_ing"></span>Курица(30 ₴)</li>
    <li data-ord="35" data-id="3"><span class="count_ing"></span>Соус(35 ₴)</li>
</ul>

Код JS:

var ingredients='', //пустая строка
     ing_price = 0; //сумма ингредиентов (цена)

var ing_list = $('.add_ing_list li'); // отдельный ингредиент
var count_ing = 0; // количество добавленных ингредиентов которое отображаться рядом с названием ингредиента

    ing_list.click(function(){
        if($(this).hasClass('checked')){
            count_ing ++;
            $(this).find('span').text('+'+count_ing+' ');
            ingredients += $(this).text()+', ';
            ing_price += $(this).data('ord');

        }else{
            $(this).addClass('checked');
            count_ing=0;
            count_ing ++;
            $(this).find('span').text('+'+count_ing+' ');
            ingredients += $(this).text()+', ';
            ing_price += $(this).data('ord');
        }
    });




Объясню еще раз проблему.

Есть у меня ингредиенты в списке ul.add_ing_list. По нажатию на <li> в строку ingredients записывается текст нажатого элемента. Допустим я нажимаю на "Сыр", в строку ingredients записывается "+1 Сыр", то есть строка уже не пустая, ingredients = "+1 Сыр (25 ₴)"; Когда я нажму еще раз на "Сыр", в строку запишется еще один "Сыр", но уже "+2 Сыр", ибо count_ing уже будет +2, то есть строка ingredients = "+1 Сыр (25 ₴), +2 Сыр (25 ₴)". Мне необходимо сделать так, что, если я нажимаю на тот элемент, который уже есть в строке, заменялось новым, то есть, если я нажму 10 раз на "Сыр", в строке должно появится ingredients = "+10 Сыр (25 ₴)"; Сейчас же если я 10 раз нажму "Сыр", строка ingredients будет равняться = "+1 Сыр (25 ₴), +2 Сыр (25 ₴), ..., +10 Сыр (25 ₴)";


Последний раз редактировалось rostik1991, 03.11.2015 в 15:12.
Ответить с цитированием
  #2 (permalink)  
Старый 03.11.2015, 14:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

rostik1991,
попробуйте сделать рабочий макет, хотя бы на сыр и картошку без php и попробуйте ещё раз обьяснить про 1 и 2
Ответить с цитированием
  #3 (permalink)  
Старый 03.11.2015, 15:13
Интересующийся
Отправить личное сообщение для rostik1991 Посмотреть профиль Найти все сообщения от rostik1991
 
Регистрация: 03.11.2015
Сообщений: 11

Описал проблемку подробнее, спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 03.11.2015, 15:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

rostik1991,
так?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
var ingredients='', //пустая строка
     ing_price = 0; //сумма ингредиентов (цена)

var ing_list = $('.add_ing_list li'); // отдельный ингредиент
var count_ing = 0; // количество добавленных ингредиентов которое отображаться рядом с названием ингредиента

    ing_list.click(function(){
        if($(this).hasClass('checked')){
            count_ing ++;
            $(this).find('span').text('+'+count_ing+' ');
              ingredients = $.map($('.add_ing_list li.checked'),function(el) {
    return $(el).text()
});
            ing_price += $(this).data('ord');

        }else{
            $(this).addClass('checked');
            count_ing=0;
            count_ing ++;
            $(this).find('span').text('+'+count_ing+' ');
            ingredients = $.map($('.add_ing_list li.checked'),function(el) {
    return $(el).text()
});
            ing_price += $(this).data('ord');
        }
      $('p').text(ingredients)

    });

});


  </script>
</head>

<body>
<p></p>
<ul class="add_ing_list">
    <li data-ord="25" data-id="1"><span class="count_ing"></span>Сыр (25 ₴)</li>
    <li data-ord="30" data-id="2"><span class="count_ing"></span>Курица(30 ₴)</li>
    <li data-ord="35" data-id="3"><span class="count_ing"></span>Соус(35 ₴)</li>
</ul>

</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 03.11.2015, 16:15
Интересующийся
Отправить личное сообщение для rostik1991 Посмотреть профиль Найти все сообщения от rostik1991
 
Регистрация: 03.11.2015
Сообщений: 11

Так
Спасибо большое!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена значений ячеек таблицы. madgals Events/DOM/Window 53 13.04.2020 12:14
Замена символов в строке jquery, javascript Derty01 Общие вопросы Javascript 7 12.04.2018 20:38
Замена слова в строке на определенной позиции Hapson Общие вопросы Javascript 3 18.01.2014 05:17
Замена подстрок в строке Neznayka Javascript под браузер 8 01.06.2013 23:44
Регулярное, замена в строке mico Общие вопросы Javascript 1 13.09.2011 22:13